JavaScript的单元测试工具(4)

发表于:2014-10-27来源:uml.org.cn作者:Elaine.Ye点击数: 标签:JavaScript
你可能已经注意到了在清单13中: 1. setUp()方法是可用的。YUI在测试用例和测试套件层面都提供了setUp()和tearDown()方法。 2. 测试方法的名称以test这一词作为

你可能已经注意到了在清单13中:

1. setUp()方法是可用的。YUI在测试用例和测试套件层面都提供了setUp()和tearDown()方法。

2. 测试方法的名称以test这一词作为开始,他们包含有断言。

3. 该例子使用的是Y.Assert.areEqual()这一断言类型,其类似于QUnit中的equal()函数。

4. YUI Test提供了多种多样的断言方法,比如说:

4.1. Y.Assert.areSame(),该断言相当于QUnit中的strictEqual()。

4.2. 数据类型断言(Y.Assert.isArray(), Y.Assert.isBoolean(), Y.Assert.isNumber()等)。

4.3. 特殊值的断言(Y.Assert.isFalse(), Y.Assert.isNaN(), Y.Assert.isNull()等)。

若要发起YUI中的测试,使用Y.Test.Runner对象。你需要把套件或是测试用例添加到这一对象中,然后调用run()方法来运行测试。清单14展示了如何运行清单13中创建的测试。

清单14. 运行YUI测试

  Y.Test.Runner.add(suite);  
  Y.Test.Runner.run(); 

默认情况下,结果被输出在浏览器的控制台中(如果你的浏览器支持控制台的话),一种更好的做法是使用Yahoo! Console组件来输出结果。若要使用Yahoo! Console组件,你需要采用Y.Console的构造函数,并把该控制台和HTML运行器的一个DOM元素绑在一起,如清单15所示。

清单15. Yahoo! Console

  var console = new Y.Console({  
  verbose: true,  
  newestOnTop: false,  
  width: "600px"  
  });  
  console.render('#testLogger'); 

清单15说明了如何使用几个参数来配置控制台,该控制台会在一个其id等于testLogger的DOM元素内部进行渲染。

HTML运行器需要更新,添加控制台所引用的DOM元素,如清单16所示。

清单16. HTML运行器更新为支持Yahoo! Console

  <body class="yui3-skin-sam"> 
  <div id="testLogger">< /div>   
  </body> 

该例子设置< body>的class,class的名称为yui3-skin-sam,该class负责定义控制台的皮肤。

图3显示的是运行测试之后的控制台

图3. YUI Test的结果

JSTestDriver带来的轻松测试

使用功能强大的JSTestDriver(JSTD)工具,你可以通过命令行来在多种浏览器中运行JavaScript。与JSTD一起发布的有一个JAR 文件,该文件让你启动服务器,捕获一个或多个浏览器,以及在浏览器中运行测试。你不需要像前面讨论的那两个框架那样,用到HTML运行器,不过要用到一个配置文件。清单17给出了一个配置文件。

清单17. 配置文件(jsTestDriver.conf)

  server: http://localhost:4224  
  load:  
  - js/src/*.js  
  test:  
  - js/test/*.js  

该配置文件是使用YAML编写的,该语言为配置文件提供了一种很好的格式。配置文件包含了一些信息:要启动的服务器,源代码和测试文件所在位置等。

若要使用JSTD执行测试:

1. 启动测试服务器。通过命令行,进入到存放jsTestDriver.jar的文件夹,然后运行下面的命令:

1.java -jar JsTestDriver-1.3.3d.jar -port 4224

清单17中指定的端口应该和配置文件中指定的是一样的。默认情况下,JSTD会在JAR文件驻留的同一目录下查找jsTestDriver.conf文件。

2. 复制和粘贴http://localhost:4224/capture这一URL到用于测试的浏览器中,以此来在服务器中注册一个或多个浏览器。

测试你在前面例子中使用的同一源代码(清单5),不过这次使用的是JSTD语法。清单18展示了如何转换清单10中的QUnit测试用例和清单14(译者注:参照上下文,疑为清单13)中的YUI Test测试用例。

原文转自:http://www.uml.org.cn/Test/201301152.asp