协慌网

登录 贡献 社区

用于 TDD 的 JavaScript 单元测试工具

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

答案

业力量角器

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 社区的人推荐给我的。

其网站报告的功能列表:

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

yolpo

yolpo

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

Yolpo 是一个可视化 javascript 执行的工具。我们鼓励 Javascript API 开发人员编写用例来展示和告知他们的 API。这些用例构成了回归测试的基础。

AVA

AVA标志

内置支持 ES2015 的未来测试跑步者。尽管 JavaScript 是单线程的,但由于其异步特性,Node.js 中的 IO 可以并行发生。 AVA 利用这一点并同时运行您的测试,这对 IO 重测试尤其有用。此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离的环境。

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

Buster.js

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

浏览器 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 无头(很快)
  • 一次在多个客户端上运行
  • 支持 NodeJS 测试
  • 不需要在开发计算机上运行服务器 / 客户端(不需要 IE)
  • 从命令行运行测试(可以集成到 ant / maven 中)
  • 编写测试 xUnit 或 BDD 样式
  • 支持多个 JavaScript 测试框架
  • 推迟测试而不是评论它们
  • SinonJS 内置
  • 保存时自动运行测试
  • 代理请求跨域
  • 可以自定义:
    • 扩展它以包装其他测试框架(内置 JsTestDriver)
    • 你自己的断言 / 反驳
    • 记者(xUnit XML,传统点,规范,tap,TeamCity 等内置)
    • 自定义 / 替换用于运行浏览器测试的 HTML
  • TextMate 和 Emacs 集成

缺点

  • 测试中的 Stil 可能是错误的
  • 没有 Eclipse / IntelliJ 的插件(尚未)
  • 不按照 TestSwarm * 等 os / browser / version 对结果进行分组。但是,它会在测试结果中打印出浏览器名称和版本。
  • 没有像 TestSwarm * 之前的测试结果的历史
  • 截至 2014 年 5 月,在 Windows 上无法正常运行

* TestSwarm 也是一个持续集成服务器,而您需要为 Buster.js 提供单独的 CI 服务器。但是,它会输出 xUnit XML 报告,因此应该很容易与HudsonBamboo或其他 CI 服务器集成。

TestSwarm

https://github.com/jquery/testswarm

正如 GitHub 网页上所述,TestSwarm 正式不再正在积极开发中。他们推荐 Karma,browserstack-runner 或 Intern。

茉莉花

茉莉花

这是一个行为驱动的框架(如下面的引文所述),可能会使熟悉 Ruby 或 Ruby on Rails 的开发人员感兴趣。语法基于RSpec ,用于在 Rails 项目中进行测试。

Jasmine 规范可以从 html 页面(以 qUnit 方式)或从测试运行器(作为 Karma)运行。

Jasmine 是一个用于测试 JavaScript 代码的行为驱动开发框架。它不依赖于任何其他 JavaScript 框架。它不需要 DOM。

如果您有使用此测试框架的经验,请提供更多信息:)

项目主页: http//jasmine.github.io/

QUnit

QUnit 专注于在浏览器中测试 JavaScript,同时为开发人员提供尽可能多的便利。来自网站的 Blurb:

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/

兴农

另一个很棒的工具是由测试驱动的 JavaScript 开发的作者 Christian Johansen 创作的sinon.js 。最好由他自己描述:

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

实习生

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

笑话

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

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

更好的是: 入门

看一下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 交互,以及如何记录测试会话,以便您可以在以后自动 “播放” 它。

Chutzpah - JavaScript 测试赛跑者

我创建了一个名为 Chutzpah 的开源项目,它是 JavaScript 单元测试的测试运行器。 Chutzpah 使您可以从命令行和 Visual Studio 内部运行 JavaScript 单元测试。它还支持在 TeamCity 持续集成服务器中运行。

业力量角器

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 社区的人推荐给我的。

其网站报告的功能列表:

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

yolpo

yolpo

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

Yolpo 是一个可视化 javascript 执行的工具。我们鼓励 Javascript API 开发人员编写用例来展示和告知他们的 API。这些用例构成了回归测试的基础。

AVA

AVA标志

内置支持 ES2015 的未来测试跑步者。尽管 JavaScript 是单线程的,但由于其异步特性,Node.js 中的 IO 可以并行发生。 AVA 利用这一点并同时运行您的测试,这对 IO 重测试尤其有用。此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离的环境。

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

Buster.js

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

浏览器 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 无头(很快)
  • 一次在多个客户端上运行
  • 支持 NodeJS 测试
  • 不需要在开发计算机上运行服务器 / 客户端(不需要 IE)
  • 从命令行运行测试(可以集成到 ant / maven 中)
  • 编写测试 xUnit 或 BDD 样式
  • 支持多个 JavaScript 测试框架
  • 推迟测试而不是评论它们
  • SinonJS 内置
  • 保存时自动运行测试
  • 代理请求跨域
  • 可以自定义:
    • 扩展它以包装其他测试框架(内置 JsTestDriver)
    • 你自己的断言 / 反驳
    • 记者(xUnit XML,传统点,规范,tap,TeamCity 等内置)
    • 自定义 / 替换用于运行浏览器测试的 HTML
  • TextMate 和 Emacs 集成

缺点

  • 测试中的 Stil 可能是错误的
  • 没有 Eclipse / IntelliJ 的插件(尚未)
  • 不按照 TestSwarm * 等 os / browser / version 对结果进行分组。但是,它会在测试结果中打印出浏览器名称和版本。
  • 没有像 TestSwarm * 之前的测试结果的历史
  • 截至 2014 年 5 月,在 Windows 上无法正常运行

* TestSwarm 也是一个持续集成服务器,而您需要为 Buster.js 提供单独的 CI 服务器。但是,它会输出 xUnit XML 报告,因此应该很容易与HudsonBamboo或其他 CI 服务器集成。

TestSwarm

https://github.com/jquery/testswarm

正如 GitHub 网页上所述,TestSwarm 正式不再正在积极开发中。他们推荐 Karma,browserstack-runner 或 Intern。

茉莉花

茉莉花

这是一个行为驱动的框架(如下面的引文所述),可能会使熟悉 Ruby 或 Ruby on Rails 的开发人员感兴趣。语法基于RSpec ,用于在 Rails 项目中进行测试。

Jasmine 规范可以从 html 页面(以 qUnit 方式)或从测试运行器(作为 Karma)运行。

Jasmine 是一个用于测试 JavaScript 代码的行为驱动开发框架。它不依赖于任何其他 JavaScript 框架。它不需要 DOM。

如果您有使用此测试框架的经验,请提供更多信息:)

项目主页: http//jasmine.github.io/

QUnit

QUnit 专注于在浏览器中测试 JavaScript,同时为开发人员提供尽可能多的便利。来自网站的 Blurb:

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/

兴农

另一个很棒的工具是由测试驱动的 JavaScript 开发的作者 Christian Johansen 创作的sinon.js 。最好由他自己描述:

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

实习生

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

笑话

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

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

更好的是: 入门

看一下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 交互,以及如何记录测试会话,以便您可以在以后自动 “播放” 它。

Chutzpah - JavaScript 测试赛跑者

我创建了一个名为 Chutzpah 的开源项目,它是 JavaScript 单元测试的测试运行器。 Chutzpah 使您可以从命令行和 Visual Studio 内部运行 JavaScript 单元测试。它还支持在 TeamCity 持续集成服务器中运行。