我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直无法找到一个完全符合TDD的合适选项。那么,是否存在完全兼容TDD的JavaScript单元测试工具?
当前回答
巴斯特JS
还有来自Christian Johansen的BusterJS,他是测试驱动Javascript开发和Sinon框架的作者。来自网站:
js是一个新的JavaScript测试框架。它通过在实际浏览器中自动测试运行(想想JsTestDriver)以及Node.js测试来进行浏览器测试。
其他回答
巴斯特JS
还有来自Christian Johansen的BusterJS,他是测试驱动Javascript开发和Sinon框架的作者。来自网站:
js是一个新的JavaScript测试框架。它通过在实际浏览器中自动测试运行(想想JsTestDriver)以及Node.js测试来进行浏览器测试。
Wikipedia条目的JavaScript部分,单元测试框架列表,提供了可用选项的列表。它指示它们是工作在客户端、服务器端还是两者都工作。
看看Dojo Object Harness (DOH)单元测试框架,它是用于JavaScript单元测试的基本框架独立的工具,没有任何Dojo依赖项。在使用Dojo Objective Harness进行Web 2.0应用程序的单元测试中有很好的描述。
如果你想自动化UI测试(这是许多开发人员的痛点),请查看doh。机器人(暂时关闭。更新:其他链接http://dojotoolkit.org/reference-guide/util/dohrobot.html)和dijit。Robotx(暂时关闭)。后者是为验收测试设计的。 更新:
参考文章解释了如何使用它们,如何模拟用户使用鼠标和/或键盘与UI交互,以及如何记录测试会话,以便稍后可以自动“播放”它。
我们现在把Qunit与Pavlov和JSTestDriver一起使用。这种方法对我们很有效。
库尼特
巴甫洛夫,源
jsTestDriver, source
因果报应或量角器
Karma是一个使用Node.js构建的JavaScript测试运行器,用于单元测试。
量角器用于端到端测试,并使用Selenium Web Driver来驱动测试。
它们都是由Angular团队制作的。您可以使用任意断言库。
视频:因果报应开始了
相关:
我应该使用量角器还是Karma进行端到端测试? 量角器和Karma可以一起使用吗?
优点:
Uses Node.js, so compatible with Win/OS X/Linux Run tests from a browser or headless with PhantomJS Run on multiple clients at once Option to launch, capture, and automatically shut down browsers Option to run server/clients on development computer or separately Run tests from a command line (can be integrated into ant/maven) Write tests xUnit or BDD style Supports multiple JavaScript test frameworks Auto-run tests on save Proxies requests cross-domain Possible to customize: Extend it to wrap other test-frameworks (Jasmine, Mocha, QUnit built-in) Your own assertions/refutes Reporters Browser Launchers Plugin for WebStorm Supported by NetBeans IDE
缺点:
不支持Node.js(即后端)测试 没有Eclipse插件(目前) 既往无检测记录
mocha.js
我完全没有资格评论mocha.js的特点、优点和缺点, 但它是我在JS社区中信任的人推荐给我的。
据其网站报道,其功能列表如下:
browser support simple async support, including promises test coverage reporting string diff support JavaScript # API for running tests proper exit status for CI support etc auto-detects and disables coloring for non-ttys maps uncaught exceptions to the correct test case async test timeout support test-specific timeouts growl notification support reports test durations highlights slow tests file watcher support global variable leak detection optionally run tests that match a regexp auto-exit to prevent "hanging" with an active loop easily meta-generate suites & test-cases mocha.opts file support clickable suite titles to filter test execution node debugger support detects multiple calls to done() use any assertion library you want extensible reporting, bundled with 9+ reporters extensible test DSLs or "interfaces" before, after, before each, after each hook arbitrary transpiler support (coffee-script etc) TextMate bundle
yolpo
它不再存在,而是重定向到sequential.js
Yolpo是一个可视化JavaScript执行的工具。JavaScript API开发人员被鼓励编写他们的用例来显示和说明他们的API。这样的用例形成了回归测试的基础。
AVA
具有内置ES2015支持的未来测试运行器。尽管JavaScript是单线程的,但由于其异步特性,Node.js中的I/O可以并行进行。AVA利用了这一点,并发地运行您的测试,这对于I/O繁重的测试尤其有益。此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离的环境。
最小且快速 简单的测试语法 同时运行测试 强制编写原子测试 没有隐式全局变量 每个测试文件的隔离环境 在ES2015中编写测试 承诺支持 发电机功能支持 异步功能支持 可观察到的支持 增强的断言 可选TAP o 跳跃 干净的堆栈跟踪
Buster.js
一个用Node.js构建的JavaScript测试运行器。非常模块化和灵活。它有自己的断言库,但如果您愿意,也可以添加自己的断言库。断言库是分离的,因此您还可以将其与其他测试运行程序一起使用。不要使用assert(!…)或expect(…).not…,它使用了refute(…),这是一个很好的转折。
一个浏览器JavaScript测试工具包。它使用浏览器自动化进行浏览器测试(想想JsTestDriver), QUnit风格的静态HTML页面测试,在无头浏览器中进行测试(PhantomJS, jsdom,…)等等。来看看概览吧! 一个Node.js测试工具包。您将得到相同的测试用例库、断言库等。这对于混合浏览器和Node.js代码也很有用。用Buster.JS编写测试用例,并在Node.js和真正的浏览器中运行。
视频:Buster.js Getting started (2:45)
优点:
Uses Node.js, so compatible with Win/OS X/Linux Run tests from a browser or headless with PhantomJS (soon) Run on multiple clients at once Supports Node.js testing Don't need to run server/clients on development computer (no need for IE) Run tests from a command line (can be integrated into ant/maven) Write tests xUnit or BDD style Supports multiple JavaScript test frameworks Defer tests instead of commenting them out SinonJS built-in Auto-run tests on save Proxies requests cross-domain Possible to customize: Extend it to wrap other test-frameworks (JsTestDriver built in) Your own assertions/refutes Reporters (xUnit XML, traditional dots, specification, tap, TeamCity and more built-in) Customize/replace the HTML that is used to run the browser-tests TextMate and Emacs integration
缺点:
仍处于测试阶段,所以可能会有bug 没有Eclipse/IntelliJ插件 不像TestSwarm *那样按操作系统/浏览器/版本对结果进行分组。但是,它会在测试结果中打印浏览器名称和版本。 没有以前的测试结果的历史,如TestSwarm * 截至2014年5月,在windows上不能完全工作
TestSwarm也是一个持续集成服务器,而Buster.js需要一个单独的CI服务器。但是,它确实输出xUnit XML报告,因此它应该很容易与Hudson、Bamboo或其他CI服务器集成。
测试群
https://github.com/jquery/testswarm
正如TestSwarm在GitHub网页上所说的那样,TestSwarm正式不再处于积极开发状态。他们推荐Karma、浏览器运行器或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/
不然
另一个很棒的工具是Christian Johansen的sinon.js,他是《测试驱动JavaScript开发》一书的作者。他自己这样描述:
独立的测试间谍,存根和模拟 JavaScript。没有依赖关系 任何单元测试框架。
实习生
Intern网站提供了与列表中其他测试框架的直接特性比较。它提供了比任何其他基于javascript的测试系统更多的开箱即用的功能。
JEST
一个新的但是非常强大的测试框架。它允许基于快照的测试,这提高了测试速度,并在测试方面创建了新的动态
来看看他们的演讲吧:https://www.youtube.com/watch?v=cAKYQpTC7MA
更好的是:开始行动
推荐文章
- Node.js和CPU密集型请求
- val()和text()的区别
- 如何使用Jest测试对象键和值是否相等?
- 将长模板文字行换行为多行,而无需在字符串中创建新行
- 如何在JavaScript中映射/减少/过滤一个集?
- Bower: ENOGIT Git未安装或不在PATH中
- 添加javascript选项选择
- 在Node.js中克隆对象
- 为什么在JavaScript的Date构造函数中month参数的范围从0到11 ?
- 使用JavaScript更改URL参数并指定默认值
- 在window.setTimeout()发生之前取消/终止
- 如何删除未定义和空值从一个对象使用lodash?
- 检测当用户滚动到底部的div与jQuery
- 在JavaScript中检查字符串包含另一个子字符串的最快方法?
- 检测视口方向,如果方向是纵向显示警告消息通知用户的指示