单元测试在后台开发中非常流行和普及,比如JAVA开发者的JUnit等,而在前端开发中则使用的非常少。究其原因,主要是单元测试更适用于逻辑代码的测试,这对于JAVA等后台编程语言来说测试起来非常方便,但是前端开发很多时候要要UI打交道,UI相关的代码不是不可以进行单元测试,但的确很麻烦,比起逻辑代码来说困难多了,这就导致了单元测试在前端开发没有普及起来。
但是随着单元测试的普及,尤其是敏捷开发的推动,涌现了许多优秀的JavaScript单元测试框架,如QUnit、Jasmine等。所有的这些框架基本上都能对Javascript代码进行很好的测试,当然UI部分的代码测试一样比较麻烦,但是我们可以通过精心构造我们的测试代码来测试部分UI代码。但是每个框架都不是万能的,它们都有各自擅长的领域,下面选取了几个具有代表性的框架进行介绍。
Cucumber:行为驱动开发工具
Cucumber是一款富有盛名的BDD(行为驱动开发)框架,特别是在Ruby 社区,它有着很高的知名度,然而大家可能不了解的是,Cucumber通过cucumber-jvm很好地支持了jvm平台上的各类语言,包括Java、Clojure、Scala、Groovy 等等。同时Cucumbe还能够理解用普通语言描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具,用Ruby编写并支持Java和·Net等多种开发语言。
Jasmine:行为驱动测试框架
Jasmine是一个有名的javascript单元测试框架,它是独立的行为驱动开发框架,提供了对JavaScript开发者来说相对容易使用的测试语法,可以帮助程序员轻松写出自己的单元测试代码。
Jasmine是基于行为驱动开发实现的测试框架,它的语法非常贴近自然语言,简单明了,容易理解。不仅如此,Jasmine还能很方便的和Ant/Maven等进行集成进行自动化测试,也可以方便和Jekins等持续集成工具进行集成,可以生成测试结果的XMl文档。同时Jasmine还有丰富的API,也支持用户扩展到它的API上。Jasmine不仅支持在浏览器中的测试,还支持在Rhino和node.js等后端测试。
Mocha:功能丰富的JavaScript测试框架
Mocha是一个简单、灵活有趣的JavaScript 测试框架,用于Node.js和浏览器上的JavaScript应用测试。Mocha是具有丰富特性的JavaScript测试框架,可以运行在Node.js和浏览器中,使得异步测试更简单、更有趣。Mocha可以持续运行测试,支持灵活又准确的报告,当映射到未捕获异常时转到正确的测试用例。
不仅如此,Mocha还具有以下特点:
支持简单异步,包括 promises
提供javascript API来运行测试
non-ttys自动检测和禁用颜色
支持异步测试超时
支持node debugger
QUnit:强大的JavaScript测试框架
QUnit是一个非常强大的JavaScript单元测试框架,可以帮助程序员调试代码。它是由 jQuery团队的成员写的,而且是jQuery的官方测试套装。QUnit一般是足以测试任何常规JavaScript代码,它甚至可以通过一些JavaScript引擎,比如Rhino或V8来测试服务器端JavaScript。
QUnit使用起来非常方便,它拥有漂亮的外观和完整的测试功能(包括异步测试);不仅如此,QUnit还不需要依赖其它任何软件包或框架,只要有能运行JS的地方就可以。它本身只有一个JS文件和CSS文件,当然如果需要也可以和jQuery等其它框架集成。QUnit支持在浏览器中测试,还支持在Rhino和node.js等后端测试。