用于 TDD 的 JavaScript 单元测试工具

新手上路,请多包涵

我研究并考虑了许多 JavaScript 单元测试和测试工具,但一直找不到合适的选项来保持完全符合 TDD 的要求。那么,是否有完全符合 TDD 的 JavaScript 单元测试工具?

原文由 Mark Levison 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 793
2 个回答

业力量角器

Karma 是一个用 Node.js 构建的 JavaScript 测试运行器,用于单元测试。

Protractor 用于端到端测试,并使用 Selenium Web Driver 来驱动测试。

两者都是由 Angular 团队制作的。你可以使用任何你想要的断言库。

截屏视频: Karma 入门

相关

优点

  • 使用 Node.js,因此与 Win/OS X/Linux 兼容

  • 使用 PhantomJS 从浏览器或无头运行测试

  • 一次在多个客户端上运行

  • 启动、捕获和自动关闭浏览器的选项

  • 在开发计算机上或单独运行服务器/客户端的选项

  • 从命令行运行测试(可以集成到 ant/maven 中)

  • 编写测试 xUnit 或 BDD 风格

  • 支持多种 JavaScript 测试框架

  • 保存时自动运行测试

  • 代理请求跨域

  • 可定制:

  • 扩展它以包装其他测试框架(Jasmine、Mocha、QUnit 内置)

  • 你自己的断言/反驳

  • 记者

  • 浏览器启动器

  • WebStorm 插件

  • 受 NetBeans IDE 支持

缺点

mocha.js

我完全没有资格评论 mocha.js 的特性、优势和劣势,

但它只是由我在 JS 社区中信任的人推荐给我的。

其网站报告的功能列表:

  • 浏览器支持

  • 简单的异步支持,包括 Promise

  • 测试覆盖率报告

  • 字符串差异支持

  • JavaScript # API 用于运行测试

  • CI支持等的正确退出状态

  • 自动检测并禁用非 tty 的着色

  • 将未捕获的异常映射到正确的测试用例

  • 异步测试超时支持

  • 特定于测试的超时

  • 咆哮通知支持

  • 报告测试持续时间

  • 突出慢速测试

  • 文件观察器支持

  • 全局变量泄漏检测

  • 可选地运行与正则表达式匹配的测试

  • 自动退出以防止活动循环“挂起”

  • 轻松元生成套件和测试用例

  • mocha.opts 文件支持

  • 可点击的套件标题以过滤测试执行

  • 节点调试器支持

  • 检测到对 done() 的多次调用

  • 使用任何你想要的断言库

  • 可扩展的报告,与 9 个以上的报告器捆绑在一起

  • 可扩展的测试 DSL 或“接口”

  • 之前,之后,之前,每个钩子之后

  • 任意转译器支持(咖啡脚本等)

  • 文本伴侣包

约尔波

约尔波

这不再存在,而是重定向到 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 入门(2:45)

优点

  • 使用 Node.js,因此与 Win/OS X/Linux 兼容

  • 使用 PhantomJS 从浏览器或无头运行测试(很快)

  • 一次在多个客户端上运行

  • 支持 Node.js 测试

  • 不需要在开发计算机上运行服务器/客户端(不需要 IE)

  • 从命令行运行测试(可以集成到 ant/maven 中)

  • 编写测试 xUnit 或 BDD 风格

  • 支持多种 JavaScript 测试框架

  • 推迟测试而不是注释掉它们

  • 内置SinonJS

  • 保存时自动运行测试

  • 代理请求跨域

  • 可定制:

  • 扩展它以包装其他测试框架(内置 JsTestDriver)

  • 你自己的断言/反驳

  • Reporters(xUnit XML、传统点、规范、tap、TeamCity 等内置)

  • 自定义/替换用于运行浏览器测试的 HTML

  • TextMate 和 Emacs 集成

缺点

  • 仍处于测试阶段,所以可能是错误的

  • 没有适用于 Eclipse/IntelliJ 的插件(还没有)

  • 不会像 TestSwarm * 那样按操作系统/浏览器/版本对结果进行分组。但是,它会在测试结果中打印出浏览器名称和版本。

  • 没有以前测试结果的历史记录,例如 TestSwarm *

  • 截至 2014 年 5 月, 无法在 Windows 上完全运行

\* TestSwarm 也是一个持续集成服务器,而 Buster.js 需要一个单独的 CI 服务器。然而,它确实输出 xUnit XML 报告,因此它应该很容易与 HudsonBamboo 或其他 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

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

更好的是: 入门

原文由 gregers 发布,翻译遵循 CC BY-SA 4.0 许可协议

看看 Dojo Object Harness (DOH) 单元测试框架,它几乎是用于 JavaScript 单元测试的框架独立工具,并且没有任何 Dojo 依赖项。在 使用 Dojo Objective Harness 对 Web 2.0 应用程序进行单元测试 时对此有很好的描述。

如果你想自动化 UI 测试(许多开发人员的痛点)——检查 doh.robot (暂时下线。更新:其他链接 http://dojotoolkit.org/reference-guide/util/dohrobot.htmldijit .robotx (暂时下) 。后者专为验收测试而设计。更新:

参考文章解释了如何使用它们,如何模拟用户使用鼠标和/或键盘与您的 UI 交互,以及如何记录测试会话,以便您稍后可以自动“播放”它。

原文由 Eugene Lazutkin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏