java script 单元测试JSUnit 使用

来源:互联网 发布:马蓉出轨的代价 知乎 编辑:程序博客网 时间:2024/05/29 18:20
Jsunit 就是 Junit 的javascript 版本,下载并解压Jsunit zip,大部分的核心文件都在 jsunit/app 目录下,两个最基本的文件: 
. jsUnitCore.js -- 每个测试文件都要引用它 
. testRunner.html -- 用来运行具体的jsunit 测试 

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

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

Java代码 复制代码 收藏代码
  1. // simple.js 被测试的javascript文件   
  2. function addTwoNumbers(value1, value2){   
  3.     return parseInt(value1) + parseInt(value2);   
  4. }  
[java] view plaincopy
  1. <span style="font-size:16px;">// simple.js 被测试的javascript文件  
  2. function addTwoNumbers(value1, value2){  
  3.     return parseInt(value1) + parseInt(value2);  
  4. }</span>  


// simple_test.html 测试文件 
Java代码 复制代码 收藏代码
  1. <!DOCTYPE HTML PUBLIC    
  2.   "-//W3C//DTD HTML 4.0 Transitional//EN">   
  3. <HTML>   
  4. <HEAD>   
  5. <TITLE> New Document </TITLE>   
  6. <script language="JavaScript"    
  7.    src="jsunit/app/jsUnitCore.js"></script>   
  8. <script language="JavaScript"    
  9.    src="simple.js"></script>   
  10. <script language="JavaScript">   
  11. function testValidArgs()   
  12. {   
  13.      assertEquals("2 + 2 is 4",    
  14.  4, addTwoNumbers(22));   
  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>  
[java] view plaincopy
  1. <span style="font-size:16px;"><!DOCTYPE HTML PUBLIC   
  2.   "-//W3C//DTD HTML 4.0 Transitional//EN">  
  3. <HTML>  
  4. <HEAD>  
  5. <TITLE> New Document </TITLE>  
  6. <script language="JavaScript"   
  7.    src="jsunit/app/jsUnitCore.js"></script>  
  8. <script language="JavaScript"   
  9.    src="simple.js"></script>  
  10. <script language="JavaScript">  
  11. function testValidArgs()  
  12. {  
  13.      assertEquals("2 + 2 is 4",   
  14.  4, addTwoNumbers(22));  
  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></span>  


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

(2) setUpPage() 

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



Java代码 复制代码 收藏代码
  1. var arg1;   
  2. var arg2;   
  3.   
  4. function setUpPage(){   
  5.      arg1 = 2;   
  6.      arg2 = 2;   
  7.      setUpPageStatus = "complete";   
  8. }  
[java] view plaincopy
  1. <span style="font-size:16px;">var arg1;  
  2. var arg2;  
  3.   
  4. function setUpPage(){  
  5.      arg1 = 2;  
  6.      arg2 = 2;  
  7.      setUpPageStatus = "complete";  
  8. }</span>  


(3) 测试集 

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

例子: 



Java代码 复制代码 收藏代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  2. <HTML>   
  3. <HEAD>   
  4. <TITLE> New Document </TITLE>   
  5. <script language="JavaScript"    
  6.    src="jsunit/app/jsUnitCore.js"></script>   
  7. <script language="JavaScript"    
  8.    src="simple.js"></script>   
  9. <script language="JavaScript">   
  10. function sampleSuite()   
  11. {   
  12.   var sampleSuite = new top.jsUnitTestSuite();   
  13.    sampleSuite.addTestPage("../simple_test.html");   
  14.   return sampleSuite;   
  15. }   
  16. function suite()   
  17. {   
  18.   var testSuite = new top.jsUnitTestSuite();   
  19.    testSuite.addTestSuite(sampleSuite());   
  20.    testSuite.addTestPage("../simple_test.html");   
  21.   return testSuite;   
  22. }   
  23. </script>   
  24. </HEAD>   
  25.   
  26. <BODY>   
  27. </BODY>   
  28. </HTML>  
[java] view plaincopy
  1. <span style="font-size:16px;"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3. <HEAD>  
  4. <TITLE> New Document </TITLE>  
  5. <script language="JavaScript"   
  6.    src="jsunit/app/jsUnitCore.js"></script>  
  7. <script language="JavaScript"   
  8.    src="simple.js"></script>  
  9. <script language="JavaScript">  
  10. function sampleSuite()  
  11. {  
  12.   var sampleSuite = new top.jsUnitTestSuite();  
  13.    sampleSuite.addTestPage("../simple_test.html");  
  14.   return sampleSuite;  
  15. }  
  16. function suite()  
  17. {  
  18.   var testSuite = new top.jsUnitTestSuite();  
  19.    testSuite.addTestSuite(sampleSuite());  
  20.    testSuite.addTestPage("../simple_test.html");  
  21.   return testSuite;  
  22. }  
  23. </script>  
  24. </HEAD>  
  25.   
  26. <BODY>  
  27. </BODY>  
  28. </HTML></span>  



(4) 日志和跟踪 

运行testRunner.html时会发现他有 Trace level 项,用于现实我们在测试方法中的日志信息,包含3个函数: 
Java代码 复制代码 收藏代码
  1. warn(message, [value])   
  2. inform(message, [value])   
  3. debug(message, [value])  
0 0
原创粉丝点击