单元测试在后台开发中非常流行和普及,比如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