我已经研究并考虑了许多 JavaScript 单元测试和测试工具,但一直无法找到合适的选项来保持完全符合 TDD 标准。那么,是否有一个完全符合 TDD 标准的 JavaScript 单元测试工具?
Karma 是一个用 Node.js 构建的 JavaScript 测试运行器,用于单元测试。
Protractor 用于端到端测试,并使用 Selenium Web Driver 来测试。
两者都是由 Angular 团队制作的。您可以使用任何所需的断言库。
截屏: Karma 入门
相关 :
专业人士
缺点 :
我完全没有资格评论 mocha.js 的功能,优点和缺点,但它只是我信任 JS 社区的人推荐给我的。
其网站报告的功能列表:
这不再存在,而是重定向到sequential.js
Yolpo 是一个可视化 javascript 执行的工具。我们鼓励 Javascript API 开发人员编写用例来展示和告知他们的 API。这些用例构成了回归测试的基础。
内置支持 ES2015 的未来测试跑步者。尽管 JavaScript 是单线程的,但由于其异步特性,Node.js 中的 IO 可以并行发生。 AVA 利用这一点并同时运行您的测试,这对 IO 重测试尤其有用。此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离的环境。
使用 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)
专业人士
缺点 :
* TestSwarm 也是一个持续集成服务器,而您需要为 Buster.js 提供单独的 CI 服务器。但是,它会输出 xUnit XML 报告,因此应该很容易与Hudson , Bamboo或其他 CI 服务器集成。
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 专注于在浏览器中测试 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.html )和dijit .robotx (临时下来) 。后者专为验收测试而设计。更新:
参考文章解释了如何使用它们,如何模拟用户使用鼠标和 / 或键盘与 UI 交互,以及如何记录测试会话,以便您可以在以后自动 “播放” 它。
我创建了一个名为 Chutzpah 的开源项目,它是 JavaScript 单元测试的测试运行器。 Chutzpah 使您可以从命令行和 Visual Studio 内部运行 JavaScript 单元测试。它还支持在 TeamCity 持续集成服务器中运行。
Karma 是一个用 Node.js 构建的 JavaScript 测试运行器,用于单元测试。
Protractor 用于端到端测试,并使用 Selenium Web Driver 来测试。
两者都是由 Angular 团队制作的。您可以使用任何所需的断言库。
截屏: Karma 入门
相关 :
专业人士
缺点 :
我完全没有资格评论 mocha.js 的功能,优点和缺点,但它只是我信任 JS 社区的人推荐给我的。
其网站报告的功能列表:
这不再存在,而是重定向到sequential.js
Yolpo 是一个可视化 javascript 执行的工具。我们鼓励 Javascript API 开发人员编写用例来展示和告知他们的 API。这些用例构成了回归测试的基础。
内置支持 ES2015 的未来测试跑步者。尽管 JavaScript 是单线程的,但由于其异步特性,Node.js 中的 IO 可以并行发生。 AVA 利用这一点并同时运行您的测试,这对 IO 重测试尤其有用。此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离的环境。
使用 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)
专业人士
缺点 :
* TestSwarm 也是一个持续集成服务器,而您需要为 Buster.js 提供单独的 CI 服务器。但是,它会输出 xUnit XML 报告,因此应该很容易与Hudson , Bamboo或其他 CI 服务器集成。
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 专注于在浏览器中测试 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.html )和dijit .robotx (临时下来) 。后者专为验收测试而设计。更新:
参考文章解释了如何使用它们,如何模拟用户使用鼠标和 / 或键盘与 UI 交互,以及如何记录测试会话,以便您可以在以后自动 “播放” 它。
我创建了一个名为 Chutzpah 的开源项目,它是 JavaScript 单元测试的测试运行器。 Chutzpah 使您可以从命令行和 Visual Studio 内部运行 JavaScript 单元测试。它还支持在 TeamCity 持续集成服务器中运行。