技术开发 频道

开发者必备的Javascript单元测试工具

  【IT168专稿】当前,在软件开发中单元测试越来越受到开发者的重视,它能提高软件的开发效率,而且能保障开发的质量。以往,单元测试往往多见于服务端的开发中,但随着Web编程领域的分工逐渐明细,在前端Javascript开发领域中,也可以进行相关的单元测试,以保障前端开发的质量。在本文中,将初步探讨如何在Javascript中进行单元测试及其注意要点。

  Javascript中的单元测试工具

  在Javascript的单元测试中工具中,有很多开源的工具,本文选取其中两个比较典型实用的工具进行介绍:jsTestDriver和Qunit。先来看下jsTestDriver(下载地址:http://code.google.com/p/js-test-driver/wiki/GettingStarted)。

  jsTestDriver以客户服务端的方式运行,在客户端发送测试请求到服务端,整个运行是在可以捕捉的浏览器中进行的,其优点为它能很容易地与代码编辑器整合,以及能成为自动构建的一部分。jsTestDriver包括一系列能与Eclipse,Maven和IntelliJ整合的插件,甚至与Visual Studio整合也是可行的(参考这篇文章),比如下图是与EditPlus整合的一个示意图:

开源的单元测试工具jsTestDriver

  jsTestDriver的安装

  安装jsTestDriver的步骤如下:

  1. 从jsTestDriver的下载页中下载相关的JAR文件,下载地址为:http://code.google.com/p/js-test-driver/downloads/list,下载其中的JsTestDriver-1.3.3a.jar 这个文件

  2. 创建两个文件夹,其中一个为名称为src的存放Javascript源代码的文件,另外一个是用来存放测试用例的文件,文件夹命名为src-test。

  3. 创建一个配置文件,配置文件名为jsTestDriver.conf,配置文件如下:

  server: http://localhost:9876

  load:

  - src/*.js

  - src-test/*.js

  这里指出了启动位于9876的端口进行监听,并且先加载src文件夹下的所有js文件夹,然后在加载src-test文件夹下的js文件进行测试。

  4. 接下来,我们配置jsTestDriver的服务端,以让其监控chrome浏览器,让其运行Javascript测试用例。在命令行输入如下代码,具体路径请根据实际情况修改。

  "C:\Program Files (x86)\Java\jre6\bin\java" -jar JsTestDriver-1.3.2.jar --port 4224 --browser "C:\Documents and Settings\Tarwn\Local Settings\Application Data\Google\Chrome\Application\chrome.exe"

  这样的话,会在4224端口启动jsTestDriver,并且会启动一个chrmoe浏览器的实例,这个实例会捕捉所有的在Chrmoe中运行的Javascript单元测试。接下来,编写一个.cmd文件,在命令方式下执行,以执行测试,测试所有放在src-test中的测试用例,代码如下: 

"C:\Program Files (x86)\Java\jre6\bin\java" -jar JsTestDriver-1.3.2.jar --tests all

  Pause

  开始编写Javascript

  我们开始编写一个简单的Javascript来进行测试,先在src和src-test目录下,分别编

  写如下代码:

  Src目录下的mystuff.js

 myAwesomeApp = {};

  myAwesomeApp.MyAwesomeClass
= function(){};

  myAwesomeApp.MyAwesomeClass.prototype.add
= function(num0, num1){

  return num0
+ num1;

  };

  Src
-test 目录下的mystuff.js

  TestCase(
"Sample Test Case",{

  
"test Number plus Zero Equals Number": function(){

  var adder
= new myAwesomeApp.MyAwesomeClass();

  assertEquals(
5, adder.add(5,0));

  },

  
"test Number plus Number Equals Sum": function(){

  var adder
= new myAwesomeApp.MyAwesomeClass();

  assertEquals(
8, adder.add(5,3));

  },

  
"test Zero plus Number Equals Number": function(){

  var adder
= new myAwesomeApp.MyAwesomeClass();

  assertEquals(
5, adder.add(0,5));

  },

  
"test Number plus Negative of Number Equals Zero": function(){

  var adder
= new myAwesomeApp.MyAwesomeClass();

  assertEquals(
0, adder.add(5,-5));

  },

  
"test Fails miserably": function(){

  fail(
"miserably");

  }

  });

  熟悉单元测试的开发者对它们应该不感到陌生。在上面的测试代码组中,分别测试

  了多种用例,用到的都是assertEquals断言。更多的用法请参考其官方主页的介绍。

  接下来,我们开始运行测试用例,方法为在命令行模式下,

  "C:\Program Files (x86)\Java\jre6\bin\java" -jar ../JsTestDriver-1.3.2.jar --port 4224 --browser "C:\Documents and Settings\Tarwn\Local Settings\Application Data\Google\Chrome\Application\chrome.exe"

  这样就可以启动chrome浏览器监听相关的Javascript单元测试用例。运行后可以看到打开了浏览器,如下图:
 

开源的单元测试工具jsTestDriver

  

0