这个问题的答案是 社区的努力。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。
我研究并考虑了许多 JavaScript 单元测试和测试工具,但一直找不到合适的选项来保持完全符合 TDD。那么,是否有完全符合 TDD 的 JavaScript 单元测试工具?
runner.github.io/)或量角器
Karma 是一个用 Node.js 构建的 JavaScript 测试运行器,用于单元测试。
Protractor 用于端到端测试,并使用 Selenium Web Driver 来驱动测试。
两者都是由 Angular 团队制作的。你可以使用任何你想要的断言库。
截屏视频:Karma 入门
优点 :
缺点 :
我完全没有资格评论 mocha.js 的特性、优点和缺点,但它只是由我在 JS 社区中信任的人推荐给我的。
其网站报告的功能列表:
这不再存在,而是重定向到sequential.js
Yolpo 是一个可视化 javascript 执行的工具。鼓励 Javascript API 开发人员编写他们的用例来展示和讲述他们的 API。这样的用例构成了回归测试的基础。
内置支持 ES2015 的未来派测试运行器。尽管 JavaScript 是单线程的,但 Node.js 中的 IO 由于其异步特性而可以并行发生。AVA 利用这一点并同时运行您的测试,这对于 IO 繁重的测试特别有用。此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离环境。
使用 Node.js 构建的 JavaScript 测试运行器。非常模块化和灵活。它带有自己的断言库,但您可以根据需要添加自己的断言库。断言库是解耦的,因此您也可以将它与其他测试运行器一起使用。而不是使用assert(!...)or expect(...).not...,它使用refute(...)which 是一个很好的转折恕我直言。
assert(!...)
expect(...).not...
refute(...)
浏览器 JavaScript 测试工具包。它使用浏览器自动化进行浏览器测试(想想 JsTestDriver)、QUnit 风格的静态 HTML 页面测试、无头浏览器中的测试(PhantomJS、jsdom、…)等等。看看概述! 一个 Node.js 测试工具包。您将获得相同的测试用例库、断言库等。这对于混合浏览器和 Node.js 代码也非常有用。使用 Buster.JS 编写测试用例,并在 Node.js 和真实浏览器中运行它。
浏览器 JavaScript 测试工具包。它使用浏览器自动化进行浏览器测试(想想 JsTestDriver)、QUnit 风格的静态 HTML 页面测试、无头浏览器中的测试(PhantomJS、jsdom、…)等等。看看概述!
一个 Node.js 测试工具包。您将获得相同的测试用例库、断言库等。这对于混合浏览器和 Node.js 代码也非常有用。使用 Buster.JS 编写测试用例,并在 Node.js 和真实浏览器中运行它。
截屏视频:Buster.js 入门(2:45)
截至 2014 年 5 月,无法在 Windows 上完全运行
TestSwarm 也是一个持续集成服务器,而 Buster.js 需要一个单独的 CI 服务器。然而,它确实输出 xUnit XML 报告,因此它应该很容易与Hudson、Bamboo或其他 CI 服务器集成。
https://github.com/jquery/testswarm
如其 GitHub 网页上所述,TestSwarm 正式不再处于积极开发中。他们推荐 Karma、browserstack-runner 或 Intern。
这是一个行为驱动的框架(如下面的引文所述),熟悉 Ruby 或 Ruby on Rails 的开发人员可能会感兴趣。该语法基于用于在 Rails 项目中进行测试的RSpec 。
Jasmine 规范可以从 html 页面(以 qUnit 方式)或从测试运行器(作为 Karma)运行。
Jasmine 是一个行为驱动的开发框架,用于测试您的 JavaScript 代码。它不依赖于任何其他 JavaScript 框架。它不需要 DOM。
如果您有使用此测试框架的经验,请提供更多信息 :)
项目主页:http: //jasmine.github.io/
QUnit 专注于在浏览器中测试 JavaScript,同时为开发人员提供尽可能多的便利。来自网站的简介:
QUnit 是一个功能强大、易于使用的 JavaScript 单元测试套件。它被 jQuery、jQuery UI 和 jQuery Mobile 项目使用,并且能够测试任何通用 JavaScript 代码
QUnit 与 TestSwarm 分享了一些历史(上图):
QUnit 最初是由 John Resig 作为 jQuery 的一部分开发的。2008 年,它有了自己的主页、名称和 API 文档,允许其他人也可以使用它进行单元测试。当时它仍然依赖于 jQuery。2009 年的重写修复了这个问题,现在 QUnit 完全独立运行。QUnit 的断言方法遵循 CommonJS 单元测试规范,这在一定程度上受到了 QUnit 的影响。
项目主页:http: //qunitjs.com/
另一个很棒的工具是由Test-Driven JavaScript Development的作者 Christian Johansen 编写的sinon.js。最好由他自己描述:
JavaScript 的独立测试间谍、存根和模拟。没有依赖项适用于任何单元测试框架。
Intern 网站提供了与此列表中其他测试框架的直接功能比较。它提供了比任何其他基于 JavaScript 的测试系统更多的开箱即用功能。
一个新的但非常强大的测试框架。它还允许基于快照的测试,这提高了测试速度并在测试方面创造了新的动态
查看他们的演讲之一:https ://www.youtube.com/watch?v=cAKYQpTC7MA
更好的是:入门