噶对testing框架茉莉,摩卡,QUnit

几个问题:

  • Karma和testing框架X(Jasmine,Mocha,QUnit)如何相互关联?
  • Java世界的等价框架是什么? 我假设Jasmine,Mocha,QUnit等于jUnit / TestNG。 噶如何?
  • 我可以运行testing框架X(如茉莉花)没有噶玛?
  • Karma是unit testing还是集成/ e2etesting? 这个参考文献显示的是unit testing,但是这是针对e2etesting的。

Karma是一个浏览器testing运行者。

这个想法是,浏览器本身没有加载testing文件,运行它们和报告结果的概念。 什么业力(大致):

  • 启动一个小型web服务器来服务“客户端”的javascript文件进行testing(1)
  • 也可以用“客户端”的javascript文件来提供testing(或者说它们经常被称为规范)(2)
  • 提供一个自定义的网页,将为testing运行javascript代码(3)
  • 启动浏览器加载此页面(4)
  • 将testing结果报告给服务器(5)
  • 业力可以再次报告结果文本文件,控制台,任何你的CI服务器喜欢,等等…

看着每个部分:

(1)这些文件将是您的实际js文件; 你会告诉业力如何加载它们。 如果你使用requirejs,有一个业力插件,需要一些configuration。

(2)这些testing可以用各种Javascripttesting框架(Jasmine,QUnit,Mocha)编写; 这是在浏览器中运行的JS代码。

(3)对于每个testing框架,自定义网页将有所不同; 这就是为什么业力有不同的框架插件。

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

(5)对业力的报告又是依赖于框架的,处理业力插件。

所以要回答你的问题:

  • 在Java中,大多数人使用JUnit,它既是编写testing和运行它们的框架,也不存在区分testing运行环境和testing报告汇总环境的问题; 业力将是JUnit Suite和JUnit TestRunner之间缺失的部分
  • 是的,你可以做所有业力“手工” – select一个框架(茉莉花,qunit,摩卡),并按照指示。 业力的优势在于它提供了一个开箱即用的解决scheme,如果你在一个标准的设置。
  • Karma可以用于unit testing(使用jasmine / qunit / whatever)和集成testing(使用另一个API,比如webdriver来驱动浏览器)

了解差异的一个更简短的方法是:

使用Jasmine / Mocha进行testing的人很可能正在使用Node虚拟机运行所有代码。

将Karma添加到组合中(在您现有的select框架之上)将运行其他浏览器引擎的testing套件。

通过这样做,您可以获得浏览器环境中的小额外资源。 testing与DOM相关的代码会更容易,但是您也将放弃由Node引擎提供的额外资源(如文件系统/ shell访问)

deviseKarma的那个人的论文在描述现有解决scheme和比较它们的过程中是非常有用的,当然也描述了Karma本身

karma-runner/karma/blob/master/thesis.html

总结:Karma是一个testing赛跑者。 它可以被QUnit,Jasmine,Mocha,…使用Karma有其他testing运行者的优势来改善您的TDD / BDD开发周期。 它“监视”文件,因此当您保存更改时,Karma会立即运行testing并报告回来,而不会切换到Web浏览器上下文来运行testing。

总之,也许问题应该是Karma AND Jasmine或Mocha或QUnit?