噶对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?