用于 TDD 的 JavaScript 单元测试工具摩卡.js

2022-08-29 22:32:25

我已经研究并考虑了许多JavaScript单元测试和测试工具,但无法找到合适的选项来保持完全符合TDD。那么,有没有一个完全符合TDD标准的JavaScript单元测试工具呢?


答案 1

业力量角器

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

量角器用于端到端测试,并使用 Selenium Web 驱动程序来驱动测试。

两者都是由Angular团队制作的。您可以使用所需的任何断言库。

截屏视频:业力入门

相关

优点

  • 使用Node.js,因此与Win / OS X / Linux兼容
  • 使用 PhantomJS 从浏览器或无外设运行测试
  • 一次在多个客户端上运行
  • 用于启动、捕获和自动关闭浏览器的选项
  • 可在开发计算机上或单独运行服务器/客户端的选项
  • 从命令行运行测试(可以集成到 ant/maven 中)
  • 编写测试 xUnit 或 BDD 样式
  • 支持多个 JavaScript 测试框架
  • 保存时自动运行测试
  • 代理请求跨域
  • 可定制:
    • 扩展它以包装其他测试框架(Jasmine,Mocha,内置QUnit)
    • 你自己的断言/反驳
    • 记者
    • 浏览器启动器
  • Plugin for WebStorm
  • 由 NetBeans IDE 支持

缺点

摩卡.js

我完全没有资格评论mocha.js的功能,优点和缺点,但它只是由我在JS社区中信任的人推荐给我的。

功能列表,如其网站报道:

  • 浏览器支持
  • 简单的异步支持,包括承诺
  • 测试覆盖率报告
  • 字符串差异支持
  • JavaScript # 用于运行测试的 API
  • CI支持等的正确退出状态
  • 自动检测并禁用非 ttys 的着色
  • 将未捕获的异常映射到正确的测试用例
  • 异步测试超时支持
  • 特定于测试的超时
  • 咆哮通知支持
  • 报告测试持续时间
  • 突出显示缓慢的测试
  • 文件观察程序支持
  • 全局变量泄漏检测
  • (可选)运行与正则表达式匹配的测试
  • 自动退出,以防止使用活动环路“挂起”
  • 轻松元生成套件和测试用例
  • mocha.opts 文件支持
  • 可点击的套件标题,用于过滤测试执行
  • 节点调试器支持
  • 检测对 done() 的多个调用
  • 使用所需的任何断言库
  • 可扩展的报告,捆绑了 9 个以上的报告者
  • 可扩展的测试 DSL 或“接口”
  • 之前,之后,每个钩子之前,每个钩子之后
  • 任意转译器支持(咖啡脚本等)
  • 文本伴侣捆绑包

约尔波

yolpo

这不再存在,而是重定向到顺序.js

Yolpo是一个可视化JavaScript执行的工具。我们鼓励 JavaScript API 开发人员编写他们的用例来展示和讲述他们的 API。此类用例构成了回归测试的基础。

艾娃

AVA logo

未来派测试运行器,内置对 ES2015 的支持。尽管JavaScript是单线程的,但Node.js中的I / O由于其异步性质而可以并行发生。AVA 利用了这一点并同时运行测试,这对于 I/O 密集型测试特别有用。此外,测试文件作为单独的进程并行运行,从而为您提供更好的性能和每个测试文件的隔离环境。

  • 最小且快速
  • 简单的测试语法
  • 同时运行测试
  • 强制编写原子测试
  • 无隐式全局变量
  • 每个测试文件的隔离环境
  • 在 ES2015 中编写测试
  • 承诺支持
  • 发电机功能支持
  • 异步函数支持
  • 可观察的支持
  • 增强型断言
  • 可选 TAP o utput
  • 清理堆栈跟踪

巴斯特.js

使用 Node 构建的 JavaScript 测试运行程序.js。非常模块化和灵活。它带有自己的断言库,但如果您愿意,可以添加自己的断言库。断言库是分离的,因此您也可以将其与其他测试运行程序一起使用。而不是使用 或 ,它使用这是一个不错的转折恕我直言。assert(!...)expect(...).not...refute(...)

浏览器 JavaScript 测试工具包。它使用浏览器自动化(想想JsTestDriver),QUnit样式的静态HTML页面测试,无外设浏览器(PhantomJS,jsdom等)进行测试进行浏览器测试。看看概述

节点.js测试工具包。您将获得相同的测试用例库,断言库等。这对于混合浏览器和Node.js代码也非常有用。编写测试用例,并在 Node.js 和真实浏览器中运行它。Buster.JS

截屏视频: 巴斯特.js 入门 (2:45)

优点

  • 使用Node.js,因此与Win / OS X / Linux兼容
  • 使用 PhantomJS 从浏览器或无外设运行测试(即将)
  • 一次在多个客户端上运行
  • 支持节点.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 也是一个持续集成服务器,而您需要一个单独的 CI 服务器。但是,它确实会输出xUnit XML报告,因此应该很容易与HudsonBamboo或其他CI服务器集成。Buster.js

TestSwarm

https://github.com/jquery/testswarm

TestSwarm正式不再像GitHub网页上所说的那样处于积极开发状态。他们推荐Karma,browserstack-runner或Intertern。

茉莉花

Jasmine

这是一个行为驱动的框架(如下面的引文所述),熟悉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/

西农

另一个很棒的工具是sinon.js作者Christian Johansen,他是Test-Driven JavaScript Development的作者。最好由他自己描述:

JavaScript 的独立测试间谍、存根和模拟。任何依赖项都不适用于任何单元测试框架。

实习生

Intern 网站提供了与此列表中的其他测试框架的直接功能比较。它提供了比任何其他基于JavaScript的测试系统更多的开箱即用功能。

开玩笑

一个新的但非常强大的测试框架。它还允许基于快照的测试,这提高了测试速度,并在测试方面创建了一个新的动态。

看看他们的演讲之一:https://www.youtube.com/watch?v=cAKYQpTC7MA

更好的是:入门


答案 2

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

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

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