不论你是在写浏览器端javascript还是后端的nodejs,总存在那么一个问题:我该使用什么单元测试库去确保我的代码如预期的运行呢?总是有那么一些流行的框架可供选择。如果你正在考虑Qunit、Jasmine或者Mocha,那么恰好我这有一些他们的优缺点信息介绍,你可能感兴趣。

Qunit

qUnit是我列举出中最老的一个框架,08年正式发布。由于时间原因,随着时间积累了一些用户。在Jquery中仍然流行,并且拥有来自许多地方性的支持。

它发展的如何呢?真的不让人满意。

特点

大量的支持,从Q&A到CI服务器支持

缺点

  1. 语法不流畅

  2. 配置令人头疼,必须持续维护

  3. 引入第三库比较困难

  4. 异步测试困难

  5. No baked-in headless run support(待译)

Jasmine

Jasmine是稍微新一点的框架,于qUnit发布后的2年2010年发布。这是一个有足够时间成长的框架,然而仍要学习其他javascript框架。它的初衷是易于安装和适用于任何场景。大多数场景下,它的运行需要Karma或Chutzpah,除了一些发行版本(如jasmine-node npm)有内建的runner。

它的前景如何呢?对于你想要的大多数场景来说,它是非常棒的。异步代码是主要的问题。

特点

  1. 对于node来说通过jasmine-node是很好安装的

  2. Headless running out of the box(待译)

  3. 内置流畅漂亮的语法,完美兼容其它测试库

  4. 有许多CI服务器(如TeamCityp,CodeShip等)和一些本身不支持插件的服务器支持

  5. 可描述性的BDD范例

缺点

  1. 异步测试有些麻烦

  2. 所有测试文件都有个确切的后缀(默认*spec.js)

Mocha

Mocha专为nodeJS的模块构建,2012发布重大版本。它的API与Jasmine非常像,多了一些语法糖去适用于更多的场景,如BDD。内建有runner,所以你不用操心runner了。与jasmine不同,它对异步代码的测试有很好的支持,通过调用done函数。如果你的测试使用它,直到done调用了test才能通过。如果没有调用它,当test方法的代码执行完test才能通过。

我对它的印象是,非常适合我!

特点

  1. 易于安装

  2. Headless running out of the box

  3. 允许任何能够抛出失败异常测试库的使用

  4. 部分CI服务器和其它插件的支持

  5. 功能上更多是面向行为驱动开发或者行为面向测试驱动开发

  6. 高扩展性

  7. 轻而易举的进行异步测试

缺点

  1. 较新的领域,部分领域缺少支持

原文链接


Blcover
384 声望11 粉丝

码码码码