不论你是在写浏览器端javascript还是后端的nodejs,总存在那么一个问题:我该使用什么单元测试库去确保我的代码如预期的运行呢?总是有那么一些流行的框架可供选择。如果你正在考虑Qunit、Jasmine或者Mocha,那么恰好我这有一些他们的优缺点信息介绍,你可能感兴趣。
Qunit
qUnit是我列举出中最老的一个框架,08年正式发布。由于时间原因,随着时间积累了一些用户。在Jquery中仍然流行,并且拥有来自许多地方性的支持。
它发展的如何呢?真的不让人满意。
特点
大量的支持,从Q&A到CI服务器支持
缺点
语法不流畅
配置令人头疼,必须持续维护
引入第三库比较困难
异步测试困难
No baked-in headless run support(待译)
Jasmine
Jasmine是稍微新一点的框架,于qUnit发布后的2年2010年发布。这是一个有足够时间成长的框架,然而仍要学习其他javascript框架。它的初衷是易于安装和适用于任何场景。大多数场景下,它的运行需要Karma或Chutzpah,除了一些发行版本(如jasmine-node npm)有内建的runner。
它的前景如何呢?对于你想要的大多数场景来说,它是非常棒的。异步代码是主要的问题。
特点
对于node来说通过jasmine-node是很好安装的
Headless running out of the box(待译)
内置流畅漂亮的语法,完美兼容其它测试库
有许多CI服务器(如TeamCityp,CodeShip等)和一些本身不支持插件的服务器支持
可描述性的BDD范例
缺点
异步测试有些麻烦
所有测试文件都有个确切的后缀(默认*spec.js)
Mocha
Mocha专为nodeJS的模块构建,2012发布重大版本。它的API与Jasmine非常像,多了一些语法糖去适用于更多的场景,如BDD。内建有runner,所以你不用操心runner了。与jasmine不同,它对异步代码的测试有很好的支持,通过调用done函数。如果你的测试使用它,直到done调用了test才能通过。如果没有调用它,当test方法的代码执行完test才能通过。
我对它的印象是,非常适合我!
特点
易于安装
Headless running out of the box
允许任何能够抛出失败异常测试库的使用
部分CI服务器和其它插件的支持
功能上更多是面向行为驱动开发或者行为面向测试驱动开发
高扩展性
轻而易举的进行异步测试
缺点
较新的领域,部分领域缺少支持
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。