业力与测试框架Jasmine,Mocha,QUnit


258

几个问题:

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

我们在没有Karma的情况下运行mocha,但是许多开发人员使用了多个测试框架
the_red_baron

Answers:


419

Karma是浏览器测试运行程序。

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

  • 启动小型Web服务器来提供要测试的“客户端” JavaScript文件(1)
  • 还可以将“客户端” javascript文件与测试(或通常称为“规范”)一起提供(2)
  • 提供自定义网页,该网页将运行JavaScript代码进行测试(3)
  • 启动浏览器以加载此页面(4)
  • 向服务器报告测试结果(5)
  • 然后,业力可以再次将结果报告到文本文件,控制台,CI服务器喜欢的任何内容等。

看每个部分:

(1)这些文件将是您实际的js文件;您将告诉业力如何装载它们。如果使用requirejs,则有一个业力插件,并且需要一些配置。

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

(3)每个测试框架的自定义网页会有所不同;这就是为什么业力具有适用于不同框架的插件的原因。

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

(5)向业力报告仍然是依赖于框架的,并且处理业力插件。

因此,回答您的问题:

  • 在Java中,大多数人都使用JUnit,它既是编写测试并运行测试的框架,又不存在区分运行测试的环境和聚合测试报告的环境的问题。因果报应是JUnit Suite和JUnit TestRunner之间缺少的部分
  • 是的,您可以执行业力“手工”做的所有事情-选择一个框架(茉莉,qunit,摩卡)并按照说明进行操作。如果您处于标准设置下,则因果报应的优点是它提供了开箱即用的解决方案。
  • 业力可用于单元测试(使用jasmine / qunit /进行任何测试)和集成测试(将使用另一个API(例如webdriver)来驱动浏览器)

59
这值得博客文章之类的。
威拉2015年

业力可以在许多浏览器(FF,Chrome或PhantomJs等无头浏览器)中启动页面。茉莉花对不对?我们可以在许多框架上对其进行测试,然后在conf js中选择该设置
Wang'l Pakhrin

1
@ Wang'lPakhrin当然,您可以在任何浏览器中使用茉莉。我的意思是,从技术上讲,业力可以启动您要测试的任何浏览器。在撰写本文时,茉莉花并不负责实际启动浏览器(我仍然不认为这样做)。希望它使事情变得清晰起来!
phtrivier


1
@Willa我根据此答案youtube.com/watch?v=bJc078szrZA :)
发狂

70

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

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

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

通过这样做,您可以获得在浏览器环境中获得的一些附加功能。测试与DOM相关的代码将更加容易,但是您还将放弃Node引擎提供的额外资源(例如文件系统/ shell访问)


34

设计Karma的那个人的论文在描述现有解决方案和比较它们,当然还描述Karma本身时非常有用。

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

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

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


2
您可以从链接中获得一个小小的摘要。可以改善您的答案
winner_joiner 2015年

1
业力可以运行Jest测试吗?
SuperUberDuper

你也可以在茉莉花里看吗?我想是的,但我并没有安静地记得。
Wang'l Pakhrin

@ Wang'l Pakhrin我不知道Jasmine具有手表功能,我只是使用nodemon。“ nodemon --exec jasmine”,每次保存文件时,它将运行测试。
snowfrogdev

论文没有提到茉莉花。
卡尔·G
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.