用于TDD的JavaScript单元测试工具

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


噶或量角器

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

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

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

Screencast:Karma入门

相关

  • 我应该使用量角器还是Karma进行端到端测试?
  • 量角器和Karma可以一起使用吗?
  • 优点

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

  • 不支持NodeJS(即后端)测试
  • Eclipse没有插件(还)
  • 没有以前的测试结果的历史
  • mocha.js

    我完全没有资格评论mocha.js的特性,优势和弱点,但是这只是由我信任JS社区的人推荐给我的。

    正如其网站所报告的功能列表:

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

    一个浏览器JavaScript测试工具包。 它使用浏览器自动化进行浏览器测试(例如JsTestDriver),qunit风格的静态HTML页面测试,在无头浏览器(phantomjs,jsdom,...)中测试等等。 看看概述!

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

    Screencast:Buster.js入门(2:45)

    优点

  • 使用node.js,与Win / OS X / Linux兼容
  • 使用PhantomJS从浏览器或无头运行测试(很快)
  • 一次运行多个客户端
  • 支持NodeJS测试
  • 不需要在开发计算机上运行服务器/客户端(不需要IE)
  • 从命令行运行测试(可以集成到ant / maven中)
  • 编写测试xUnit或BDD样式
  • 支持多个JavaScript测试框架
  • 推迟测试而不是评论它们
  • SinonJS内置
  • 在保存时自动运行测试
  • 代理请求跨域
  • 可以定制:
  • 扩展它来包装其他测试框架(内置JsTestDriver)
  • 你自己的断言/驳斥
  • 记者(xunit XML,传统的点,规格,水龙头,teamcity和更内置)
  • 自定义/替换用于运行浏览器测试的HTML
  • TextMate和Emacs集成
  • 缺点

  • Stil在测试版中可能会有bug
  • Eclipse / IntelliJ没有插件(还)
  • 不像OS /浏览器/版本像TestSwarm *那样对结果进行分组。 但是,它会在测试结果中打印浏览器名称和版本。
  • 以前的测试结果没有像TestSwarm *
  • 截至2014年5月,没有完全在窗户上工作
  • * TestSwarm也是一个持续集成服务器,而您需要一个单独的CI服务器用于Buster.js。 但是,它会输出xUnit XML报告,因此应该很容易与Hudson,Bamboo或其他CI服务器集成。

    TestSwarm

    https://github.com/jquery/testswarm

    正如他们的GitHub网页所述,TestSwarm正式不再处于积极的发展状态。 他们推荐Karma,browserstack-runner或Intern。

    茉莉花

    这是一个客户端测试运行者,可能会让熟悉Ruby或Ruby on Rails的开发人员感兴趣。 该语法基于用于在Rails项目中进行测试的RSpec。

    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/

    兴农

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

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

    实习生

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


    查看Dojo对象线程(DOH)单元测试框架,该框架对于JavaScript单元测试来说非常独立于框架,并且没有任何Dojo依赖关系。 在使用Dojo Objective Harness进行单元测试的Web 2.0应用程序中有很好的描述。

    如果你想自动执行UI测试(许多开发人员感到痛苦) - 请检查doh.robot(临时下载。update:其他链接http://dojotoolkit.org/reference-guide/util/dohrobot.html)和dijit .robotx(临时下降)。 后者是为验收测试而设计的。 更新:

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


    Chutzpah - JavaScript测试亚军

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

    链接地址: http://www.djcxy.com/p/21405.html

    上一篇: JavaScript unit test tools for TDD

    下一篇: How do you unit test private methods?