几个问题:

  • Karma和测试框架X(Jasmine、Mocha、QUnit)是如何相互关联的?
  • Java world的等效框架是什么?我假设Jasmine、Mocha、QUnit等于jUnit/TestNG.因果报应呢?
  • 我能在没有因果报应的情况下运行测试框架X(如Jasmine)吗?
  • Karma是单元测试还是集成/e2e测试?这reference个表示用于单元测试,而this表示用于e2e测试.

推荐答案

Karma是一名浏览器测试人员.

其想法是浏览器本身没有加载测试文件、运行测试文件和报告结果的概念.

  • 启动一台小型Web服务器,为待测试的"客户端"javascript文件提供服务(1)
  • 还可以为"客户端"javascript文件提供测试(或者通常称为规范)(2)
  • 提供一个自定义网页,该网页将运行测试的javascript代码(3)
  • 启动浏览器以加载此页面(%4)
  • 向服务器报告测试结果(5)
  • karma可以再次将结果报告给文本文件、控制台、您的CI服务器喜欢的任何东西等等...

看看每个部分:

(1)这些文件将是您实际的js文件;您将告诉Karma如何加载它们.如果您使用Requirejs,则会有一个Karma插件,并且需要一些配置.

(2) Those tests can be written in a variety of Javascript testing framework (Jasmine, QUnit, Mocha) ; this is JS code that is run in the browser.

(3) The custom web page will be a bit different for each testing framework ; this is why karma has plugins for different frameworks.

(4) Karma可以在许多浏览器(FF、Chrome或PhantomJs等无头浏览器)中启动页面

(5) 向karma报告同样依赖于框架,并处理karma插件.

所以要回答你的问题:

  • 在Java中,大多数人使用JUnit,它既是编写测试并运行测试的框架,又不存在区分运行测试的环境和聚合测试报告的环境的问题;Karma将是JUnit套件和JUnit TestRunner之间缺失的部分
  • 是的,你可以"手工"完成因果报应所做的一切——选择一个框架(茉莉花、昆特、摩卡)并遵循指示.karma的优势在于,如果你处于标准设置中,它提供了一个开箱即用的解决方案.
  • Karma既可以用于单元测试(使用jasmine/qunit/任何东西),也可以用于集成测试(它将使用另一个API,如Webdriver来驱动浏览器).

Javascript相关问答推荐

在包装函数中添加日志(log)

使用 HTML、CSS 和 JavaScript 在页面刷新时保持选定的主题

第二次调用函数会影响第一次调用的变量

我如何用对象对数组进行冒泡排序?

我在使用 Route 时收到空白的 react-app 页面

如何在保持居中的同时水平滚动到容器中的项目?

如何让 Javascript 跟踪我的分数增量?

在 Javascript 中,(动态)导入的 ES6-Module 实例的类型/类是什么?

停止使用 javascript 循环音频但完成播放迭代

合并两个不同大小的相交圆并找到半径加权中心的坐标

Form.IO - 如何使 DataGrid 中的下拉选择变得可见

向下滚动页面,然后使用 jQuery 向上滚动

严格模式与 React 18 的工作方式不同吗?

如何在react 路由dom中将不存在的路由重定向到主页?

正则表达式(Regex)不适用于坐标javascript的所有样本

异步脚本何时触发 onload?

如何在 React Native 上的 Firebase 中获取特定文档的文档 ID?

KnockoutJS - 如何使用可观察数组隐藏 foreach 中的某些元素?

在 map Typescript 中添加额外的属性类型

React - 在不加载页面的情况下在 url 之间导航