用于TDD的JavaScript单元测试工具

这个问题's的答案是社区的努力。编辑现有答案以改进此帖子。它目前不接受新的答案或互动。

我已经研究并考虑了许多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网站提供了与

发表评论