Karma vs测试框架Jasmine,Mocha,QUnit

Lee*_*iam 252 javascript integration-testing unit-testing

几个问题:

  • Karma和测试框架X(Jasmine,Mocha,QUnit)如何相互关联?
  • Java世界的等效框架是什么?我假设Jasmine,Mocha,QUnit等于jUnit/TestNG.Karma怎么样?
  • 我可以在没有Karma的情况下运行测试框架X(例如Jasmine)吗?
  • Karma用于单元测试或集成/ e2e测试吗?该参考文献显示的是用于单元测试,但是表示用于e2e测试.

pht*_*ier 404

Karma是一个浏览器测试运行器.

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

  • 启动一个小型Web服务器来提供要测试的"客户端"javascript文件(1)
  • 还提供带有测试的"客户端"javascript文件(或者规范,因为它们经常被称为)(2)
  • 提供一个自定义网页,为测试运行javascript代码(3)
  • 启动浏览器加载此页面(4)
  • 将测试结果报告给服务器(5)
  • 然后,业力可以再次将结果报告给文本文件,控制台,CI服务器喜欢的任何内容等等......

看每个部分:

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

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

(3)每个测试框架的自定义网页会有所不同; 这就是为什么业力有不同框架的插件.

(4)Karma可以在许多浏览器(FF,Chrome或像PhantomJs这样的无头浏览器)中启动页面.

(5)对业力的报告再次依赖于框架,并处理业力插件.

那么回答你的问题:

  • 在Java中,大多数人使用JUnit,它既是编写测试并运行它们的框架,但没有区分运行测试的环境和聚合测试报告的环境的问题; 业力将是JUnit Suite和JUnit TestRunner之间的缺失部分
  • 是的,你可以做"业力"所做的一切业力 - 选择一个框架(茉莉,qunit,摩卡)并遵循指示.业力的优势在于,如果您处于标准设置中,它可以提供开箱即用的解决方案.
  • Karma可以用于单元测试(使用jasmine/qunit/whatever)和集成测试(它将使用另一个API,如webdriver,来驱动浏览器)

  • 这应该是博客文章或其他东西. (55认同)

Sys*_*ank 67

了解差异的一种较短方法:

使用普通Jasmine/Mocha进行测试的人最有可能使用Node虚拟机运行所有代码.

将Karma添加到混合中(在您选择的现有框架之上)将使用其他浏览器的引擎运行您的测试套件.

通过这样做,您可以获得浏览器环境所带来的额外功能.测试与DOM相关的代码会更容易,但您也将放弃Node引擎提供的额外资源(如文件系统/ shell访问)


mau*_*777 32

设计Karma的人的论文在描述现有解决方案和比较它们方面非常有用,当然也描述了Karma本身

https://github.com/karma-runner/karma/blob/master/thesis.pdf

简介:Karma是一名试运行员.它可以被QUnit,Jasmine,Mocha使用...... Karma对其他测试跑步者有优势,可以改善您的TDD/BDD开发周期.它"监视"文件,因此当您保存更改时,Karma会立即运行测试并报告,而不会切换到Web浏览器的上下文来运行测试.

简而言之,也许问题应该是Karma AND Jasmine或Mocha还是QUnit?

  • 你可以从链接中得到一个小小的摘要.这改善了你的答案 (2认同)
  • karma 可以运行 Jest 测试吗? (2认同)