日期:2014-05-16  浏览次数:20391 次

最近发现JUnit测试javascript很好用
Jsunit 就是 Junit 的javascript 版本,下载并解压Jsunit zip,大部分的核心文件都在 jsunit/app 目录下,
两个最基本的文件:
. jsUnitCore.js — 每个测试文件都要引用它
. testRunner.html — 用来运行具体的jsunit 测试

(1) 起步例子:
在Jsunit解压后的同级目录下建立两个文件,目录结构:
|– jsunit
|– test.html

写完后运行 jsunit/testRunner.html,在页面中选择test.html, 点击run,可以看到测试结果信息。

// test.html 测试文件

查看源代码打印帮助
01 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

02 <HTML>  

03 <HEAD>  

04 <TITLE> New Document </TITLE>  

05 <script language="JavaScript"  

06 src="app/jsUnitCore.js"></script>  

07 <script language="JavaScript">  

08 function addTwoNumbers(value1, value2){  

09     return parseInt(value1) + parseInt(value2);  

10 }  

11 function testValidArgs()  

12 {  

13     assertEquals("2 + 2 is 4",  

14     4, addTwoNumbers(2, 2));  

15 }  

16 function testWithNegativeNumbers()  

17 {  

18     assertEquals("-2 + -2 is -4",  

19     -4, addTwoNumbers(-2, -2));  

20 }  

21 function exposeTestFunctionNames()  

22 {  

23     var tests = new Array(2);  

24     tests[0] = "testValidArgs";  

25     tests[1] = "testWithNegativeNumbers";  

26     return tests;  

27 }  

28 </script>  

29 </HEAD>  

30    

31 <BODY>  

32 test page for addTwoNumbers(value1, value2);  

33 </BODY>  

34 </HTML> 




通常以”test”开头的测试函数会被自动发现,但如果没有发现,就需要我们用exposeTestFunctionNames 函数来显示指定测试函数。

(2) setUpPage()

jsunit 包含了一次性启动方法,setUpPage() 只对每个测试页调用一次,即在所有测试函数调用之前调用,适于做预处理,但要注意在setUpPage()最后一行要把 setUpPageStatus 变量设置为 “complete”, 如:
var arg1;
var arg2;

function setUpPage(){
arg1 = 2;
arg2 = 2;
setUpPageStatus = “complete”;
}




(3) 测试集

测试集把不同的测试页分组组织,其中包含测试页或其他测试集,他们会按照顺序执行。
注意点:
. 测试集中不能包含任何测试函数
. 必须包含一个返回 jsUnitTestSuite 对象的 suite 函数
. 有两个方法添加测试页:addTestPage(testPage) addTestSuite(testSuite), 在添加测试页时要注意路径,应是相对于testRunner.html 的

例子:

查看源代码打印帮助
01 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

02 <HTML>  

03 <HEAD>  

04 <TITLE> New Document </TITLE>  

05 <script language="JavaScript"  

06 src="app/jsUnitCore.js"></script>  

07 <script language="JavaScript">  

08 function sampleSuite()  

09 {  

10 var sampleSuite = new top.jsUnitTestSuite();  

11 sampleSuite.addTestPage("../test.html");  

12 return sampleSuite;  

13 }  

14 function suite()  

15 {  

16 var testSuite = new top.jsUnitTestSuite();  

17 testSuite.addTestSuite(sampleSuite());  

18 testSuite.addTestPage("../test.html");  

19 return testSuite;  

20 }  

21 </script>  

22 </HEAD>  

23    

24 <BODY>  

25 </BODY>  

26 </HTML> 




(4) 日志和跟踪
运行testRunner.html时会发现他有 Trace level 项,用于现实我们在测试方法中的日志信息,包含3个函数:
warn(message, [value])
inform(message, [value])
debug(message, [value])

JsUnit下载地址:http://sourceforge.net/projects/jsunit/