Karma 与测试框架 Jasmine、Mocha、QUnit [关闭]

Posted

技术标签:

【中文标题】Karma 与测试框架 Jasmine、Mocha、QUnit [关闭]【英文标题】:Karma vs testing framework Jasmine, Mocha, QUnit [closed] 【发布时间】:2014-11-19 20:17:20 【问题描述】:

几个问题:

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

【问题讨论】:

我们在没有 Karma 的情况下运行 mocha,但是 a lot of developers use several testing frameworks 听说过赛普拉斯吗? Cypress 是一款出色的 e2e UI 测试工具。这篇文章讨论了如何设置它以及所有mydaytodo.com/e2e-testing-websites-with-cypress 【参考方案1】:

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

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

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

看每个部分:

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

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

(3) 每个测试框架的自定义网页会有些不同;这就是为什么 karma 有针对不同框架的插件。

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

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

所以回答你的问题:

在Java中,大多数人使用JUnit,它既是一个框架来编写和运行测试,但没有区分运行测试的环境和聚合测试报告的环境的问题; karma 将是 JUnit Suite 和 JUnit TestRunner 之间缺少的部分 是的,您可以“手动”完成 karma 所做的所有事情 - 选择一个框架(jasmine、qunit、mocha)并按照说明进行操作。 karma 的优势在于它提供了一个开箱即用的解决方案,如果您使用的是标准设置。 Karma 可用于单元测试(使用 jasmine / qunit / 不管)和集成测试(将使用另一个 API,如 webdriver,来驱动浏览器)

【讨论】:

这值得一篇博文之类的。 Karma 可以在许多浏览器(FF、Chrome 或 PhantomJs 等无头浏览器)中启动页面?茉莉花是对的吗?我们可以在许多框架上对其进行测试并在 conf js 中选择该设置 @Wang'lPakhrin 你当然可以在任何浏览器中使用 jasmine。我的意思是,从技术上讲,业力可以启动(m)您想要测试的任何浏览器。在撰写本文时,jasmine 不负责实际启动浏览器(我仍然认为它不负责。)希望它能澄清事情! thejsguy.com/2015/01/12/jasmine-vs-mocha-chai-and-sinon.html "Jasmine vs. Mocha, Chai, and Sinon" @Willa 我根据这个答案制作了一个 youtube 视频 youtube.com/watch?v=bJc078szrZA :)【参考方案2】:

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

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

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

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

【讨论】:

【参考方案3】:

设计 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?

【讨论】:

能否从链接中做一个小总结。这可以改善您的答案 karma 可以运行 Jest 测试吗? 茉莉花也可以看吗?我想是的,但我不记得了。 @Wang'l Pakhrin 我不知道 Jasmine 有手表功能,我只是使用 nodemon。 “nodemon --exec jasmine”,每次保存文件时它都会运行测试。 论文没有提到茉莉花。

以上是关于Karma 与测试框架 Jasmine、Mocha、QUnit [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

测试框架Mocha与断言expect

前端测试框架学习

如何使用 Mocha / Jasmine 在控制器方法中为 if else 案例获得 Karma 覆盖?

不加载 karma-jasmine 框架中生成的测试用例

在Visual Studio 2013中使用Jasmine + Karma进行AngularJS测试

javascript 用于邮差测试脚本的mocha / jasmine兼容测试框架(缩小不到1KB)