我研究并考虑了许多 JavaScript 单元测试和测试工具,但一直找不到合适的选项来保持完全符合 TDD 的要求。那么,是否有完全符合 TDD 的 JavaScript 单元测试工具?
原文由 Mark Levison 发布,翻译遵循 CC BY-SA 4.0 许可协议
我研究并考虑了许多 JavaScript 单元测试和测试工具,但一直找不到合适的选项来保持完全符合 TDD 的要求。那么,是否有完全符合 TDD 的 JavaScript 单元测试工具?
原文由 Mark Levison 发布,翻译遵循 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.html ) 和 dijit .robotx (暂时下) 。后者专为验收测试而设计。更新:
参考文章解释了如何使用它们,如何模拟用户使用鼠标和/或键盘与您的 UI 交互,以及如何记录测试会话,以便您稍后可以自动“播放”它。
原文由 Eugene Lazutkin 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
业力 或 量角器
Karma 是一个用 Node.js 构建的 JavaScript 测试运行器,用于单元测试。
Protractor 用于端到端测试,并使用 Selenium Web Driver 来驱动测试。
两者都是由 Angular 团队制作的。你可以使用任何你想要的断言库。
截屏视频: Karma 入门
相关:
我应该使用 Protractor 还是 Karma 进行端到端测试?
Protractor 和 Karma 可以一起使用吗?
优点:
使用 Node.js,因此与 Win/OS X/Linux 兼容
使用 PhantomJS 从浏览器或无头运行测试
一次在多个客户端上运行
启动、捕获和自动关闭浏览器的选项
在开发计算机上或单独运行服务器/客户端的选项
从命令行运行测试(可以集成到 ant/maven 中)
编写测试 xUnit 或 BDD 风格
支持多种 JavaScript 测试框架
保存时自动运行测试
代理请求跨域
可定制:
扩展它以包装其他测试框架(Jasmine、Mocha、QUnit 内置)
你自己的断言/反驳
记者
浏览器启动器
WebStorm 插件
受 NetBeans IDE 支持
缺点:
不支持 Node.js(即后端) 测试
没有适用于 Eclipse 的插件(还没有)
没有以前的测试结果的历史
mocha.js
我完全没有资格评论 mocha.js 的特性、优势和劣势,
但它只是由我在 JS 社区中信任的人推荐给我的。
其网站报告的功能列表:
浏览器支持
简单的异步支持,包括 Promise
测试覆盖率报告
字符串差异支持
JavaScript # API 用于运行测试
CI支持等的正确退出状态
自动检测并禁用非 tty 的着色
将未捕获的异常映射到正确的测试用例
异步测试超时支持
特定于测试的超时
咆哮通知支持
报告测试持续时间
突出慢速测试
文件观察器支持
全局变量泄漏检测
可选地运行与正则表达式匹配的测试
自动退出以防止活动循环“挂起”
轻松元生成套件和测试用例
mocha.opts 文件支持
可点击的套件标题以过滤测试执行
节点调试器支持
检测到对 done() 的多次调用
使用任何你想要的断言库
可扩展的报告,与 9 个以上的报告器捆绑在一起
可扩展的测试 DSL 或“接口”
之前,之后,之前,每个钩子之后
任意转译器支持(咖啡脚本等)
文本伴侣包
约尔波
Yolpo 是一个可视化 JavaScript 执行的工具。鼓励 JavaScript API 开发人员编写他们的用例来展示和讲述他们的 API。这样的用例构成了回归测试的基础。
艾娃
内置支持 ES2015 的未来派测试运行器。尽管 JavaScript 是单线程的,但 Node.js 中的 I/O 可以并行发生,因为它具有异步特性。 AVA 利用这一点并同时运行您的测试,这对于 I/O 繁重的测试特别有用。此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离环境。
最小和快速
简单的测试语法
同时运行测试
强制编写原子测试
没有隐式全局变量
每个测试文件的隔离环境
在 ES2015 中编写测试
承诺支持
生成器功能支持
异步功能支持
可观察的支持
增强的断言
可选的 TAP o
输出
Buster.js
使用 Node.js 构建的 JavaScript 测试运行器。非常模块化和灵活。它带有自己的断言库,但您可以根据需要添加自己的断言库。 断言库 是解耦的,因此您也可以将它与其他测试运行器一起使用。它没有使用
assert(!...)
或expect(...).not...
,而是使用refute(...)
恕我直言,这是一个很好的转折。截屏视频: 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 报告,因此它应该很容易与 Hudson 、 Bamboo 或其他 CI 服务器集成。测试群
https://github.com/jquery/testswarm
如其 GitHub 网页上所述,TestSwarm 正式不再处于积极开发中。他们推荐 Karma、browserstack-runner 或 Intern。
茉莉花
这是一个行为驱动的框架(如下面的引文所述),熟悉 Ruby 或 Ruby on Rails 的开发人员可能会对它感兴趣。该语法基于用于在 Rails 项目中进行测试的 RSpec 。
Jasmine 规范可以从 HTML 页面(以 qUnit 方式)或从测试运行器(作为 Karma)运行。
如果您有使用此测试框架的经验,请提供更多信息 :)
项目主页:http: //jasmine.github.io/
QUnit
QUnit 专注于在浏览器中测试 JavaScript,同时为开发人员提供尽可能多的便利。来自网站的简介:
QUnit 与 TestSwarm 分享了一些历史(上图):
项目主页:http: //qunitjs.com/
诗乃
另一个很棒的工具是由 Test-Driven JavaScript Development 的作者 Christian Johansen 编写的 sinon.js 。最好由他自己描述:
实习生
Intern 网站 提供了与此列表中其他测试框架的直接功能比较。它提供了比任何其他基于 JavaScript 的测试系统更多的开箱即用功能。
笑话
一个新的但非常强大的测试框架。它还允许基于快照的测试,这提高了测试速度并在测试方面创造了新的动态
查看他们的演讲之一: https ://www.youtube.com/watch?v=cAKYQpTC7MA
更好的是: 入门