我已经研究并考虑了许多JavaScript单元测试和测试工具,但是没有找到一个合适的选项来保持完全符合TDD。那么,是否有一个完全符合TDD的JavaScript单元测试工具
业力或量角器
Karma是一个使用Node.js构建的JavaScript测试运行程序,用于单元测试
量角器用于端到端测试,并使用Selenium Web驱动程序驱动测试
两者都是由Angular团队制作的。您可以使用任意一个断言库
电影:因果报应开始
相关的:
- 我应该使用量角器还是因果报应来进行端到端测试
- 量角器和业力可以一起使用吗
专业人士:
- 使用node.js,因此与Win/OS X/Linux兼容
- 使用PhantomJS从浏览器或headless运行测试
- 一次在多个客户端上运行
- 启动、捕获和自动关闭浏览器的选项
- 在开发计算机上或单独运行服务器/客户端的选项
- 从命令行运行测试(可以集成到ant/maven中)
- 使用xUnit或BDD样式编写测试
- 支持多个JavaScript测试框架
- 保存时自动运行测试
- 跨域代理请求
- 可以自定义:
- 扩展它以包装其他测试框架(Jasmine、Mocha、QUnit内置)
- 你自己的断言/反驳
- 记者
- 浏览器启动器
- WebStorm插件
- 由Netbeans IDE支持
缺点:
- 不支持NodeJS(即后端)测试
- Eclipse没有插件(还没有)
- 没有以前测试结果的历史记录
摩卡咖啡
我完全没有资格评论mocha.js的特性、优点和缺点,
但这是我在JS社区信任的人向我推荐的
其网站报道的功能列表:
- 浏览器支持
- 简单异步支持,包括承诺
- 测试覆盖率报告
- 串差支持
- javascript#用于运行测试的API
- CI支持等的正确退出状态
- 自动检测并禁用非TTY的着色
- 将未捕获的异常映射到正确的测试用例
- 异步测试超时支持
- 测试特定超时
- 咆哮通知支持
- 报告测试持续时间
- 重点介绍慢速测试
- 文件监视程序支持
- 全局变量泄漏检测
- 可以选择运行与regexp匹配的测试
- 自动退出以防止;悬挂;有一个活跃的循环
- 轻松生成元套件&;测试用例
- mocha.opts文件支持
- 可单击套件标题以筛选测试执行
- 节点调试器支持
- 检测对done()的多个调用
- 使用您想要的任何断言库
- 可扩展的报告,与9名以上的记者捆绑在一起
- 可扩展测试DSL或;接口“
- 前,后,前,后,每钩
- 任意传输支持(咖啡脚本等)
- TextMate束
约尔波
它不再存在,改为重定向到sequential.js
Yolpo是一个可视化javascript执行的工具。Javascript-API开发人员被鼓励编写他们的用例来显示和告知他们的API。此类用例构成回归测试的基础
艾娃
具有ES2015内置支持的未来测试运行程序。尽管JavaScript是单线程的,但由于其异步特性,Node.js中的IO可以并行进行。AVA利用了这一点并同时运行您的测试,这对于IO密集型测试尤其有益。此外,测试文件作为独立的进程并行运行,为每个测试文件提供了更好的性能和独立的环境
- 最小和快速
- 简单测试语法
- 同时运行测试
- 强制编写原子测试
- 无隐式全局变量
- 每个测试文件的隔离环境
- 在ES2015中编写测试
- 承诺支持
- 发电机功能支持
- 异步函数支持
- 可见支撑
- 强化资产
- 可选分接头o
输出 - 清除堆栈痕迹
Buster.js
使用Node.js构建的JavaScript测试运行程序。非常模块化和灵活。它有自己的断言库,但如果愿意,您可以添加自己的断言库。断言库是解耦的,因此您还可以将它与其他测试运行程序一起使用。它没有使用断言(!…)或期望(…)。而不是…,而是使用反驳(…),这是一个很好的转折点
浏览器JavaScript测试工具包。它通过浏览器自动化(想想JsTestDriver)、QUnit风格的静态HTML页面测试、无头浏览器测试(PhantomJS、jsdom等等)进行浏览器测试,等等。请看一下概述
Node.js测试工具包。您将获得相同的测试用例库、断言库等。这对于混合浏览器和Node.js代码来说也是非常好的。使用Buster.JS编写测试用例,并在Node.JS和真实浏览器中运行它
屏幕广播:Buster.js入门(2:45)
专业人士:
- 使用node.js,因此与Win/OS X/Linux兼容
- 使用PhantomJS从浏览器或headless运行测试(很快)
- 一次在多个客户端上运行
- 支持NodeJS测试
- 不需要在开发计算机上运行服务器/客户端(不需要IE)
- 从命令行运行测试(可以集成到ant/maven中)
- 使用xUnit或BDD样式编写测试
- 支持多个JavaScript测试框架
- 推迟测试,而不是注释它们
- SinonJS内置
- 保存时自动运行测试
- 跨域代理请求
- 可以自定义:
- 扩展它以包装其他测试框架(内置JsTestDriver)
- 你自己的断言/反驳
- 记者(XUnitXML、传统点、规范、tap、TeamCity和更多内置)
- 自定义/替换用于运行浏览器测试的HTML
- TextMate与Emacs的集成
缺点:
- 仍处于测试阶段,因此可能会出现问题
- 没有Eclipse/IntelliJ的插件(目前)
- 不会像TestSwarm*那样按操作系统/浏览器/版本对结果进行分组。但是,它会在测试结果中打印出浏览器名称和版本
- 没有TestSwarm等以前测试结果的历史记录*
- 截至2014年5月,windows无法完全运行
*TestSwarm也是一个持续集成服务器,而Buster.js需要一个单独的CI服务器。但是,它确实输出XUnitXML报告,因此它应该很容易与Hudson、Bambor或其他CI服务器集成
试验群
https://github.com/jquery/testswarm
TestSwarm正式不再处于GitHub网页上所述的积极开发中。他们推荐Karma、browserstack runner或实习生
茉莉花
这是一个行为驱动的框架(如下所述),可能会引起熟悉Ruby或RubyonRails的开发人员的兴趣。该语法基于用于Rails项目中测试的RSpec
Jasmine规范可以从html页面(以qUnit方式)或测试运行程序(作为Karma)运行
Jasmine是一个用于测试JavaScript代码的行为驱动开发框架。它不依赖于任何其他JavaScript框架。它不需要DOM
如果您有此测试框架的经验,请提供更多信息:)
计划之家:http://jasmine.github.io/
昆特
QUnit专注于在浏览器中测试JavaScript,同时为开发人员提供尽可能多的便利。网站简介:
QUnit是一个功能强大、易于使用的JavaScript单元测试套件。它由jQuery、jQuery UI和jQuery移动项目使用,能够测试任何通用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网站提供了与