JsUnit工具应用

来源:互联网 发布:淘宝活动报名匠人头像 编辑:程序博客网 时间:2024/05/16 05:42

为什么要用JsUnit,因为项目不是WEB项目,JS代码无法用网页测试,同样无法通过alert测试,所以采用JsUnit来测试编写的JS代码。

准备工作:下载JsUnit相关资源:www.jsunit.net 解压后如下图:


JsUnit的核心文件(jsUnitCore.js、jsUnitTestManager.js等 )都在app文件夹中,testRunner.html是用来JS测试图形化页面,你不需要通过web服务器访问它,只需要通过文件系统加载它进行浏览就可以了,如下:

通过file输入框加载你的测试页面,点击Run可以运行测试页,下面的Trace level下拉框可以选择日志级别(warn、info、debug)。注意,有的浏览器可能看不见file输入框,请选择合适的浏览器测试。

下面我们编写一个测试用例test01.html:

[html] view plain copy
print?
  1. <pre name=“code” class=“html”><!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.0 Transitional//EN”>   
  2. <HTML>   
  3. <HEAD>   
  4. <TITLE> my_jsUnit_test01</TITLE>   
  5. <script language=“JavaScript” src=“../app/jsUnitCore.js”></script>  
  6. <script language=“JavaScript”>  
  7. var result = null;  
  8.   
  9. function add(num1,num2){  
  10.     return num1+num2;  
  11. }  
  12. function multiply(num1,num2){  
  13.     return num1*num2;  
  14. }  
  15. //测试方式要以test开头,且不带有参数,jsUnit会自动识别test开头的测试方法并会运行它  
  16. function testAdd() {  
  17.     result = add(1,1);  
  18.     debug(“add(1,1)=”+result);  
  19.     assertEquals(“1+1=2“, 2, add(1,1));  
  20. }  
  21. //无效的测试方法  
  22. function multiplyTest(){  
  23.     result = multiply(2,3);  
  24.     debug(“multiply(2,3)=”+result);  
  25.         assertEquals(“2*3=6“, 5, multiply(2,3));  
  26. }  
  27. //如果找不到测试方法或要测试的方法不是以标准的test开头时,使用如下方法进行手动指定  
  28. function exposeTestFunctionNames() {   
  29.     var tests = new Array(2);   
  30.     tests[0] = “multiplyTest”;   
  31.     tests[1] = “testAdd”;   
  32.     return tests;   
  33. }  
  34. //setUp()会在每个测试之前调用  
  35. function setUp(){  
  36.     info(“–>result=”+result);  
  37.     result = 0;  
  38.     info(“测试夹具,初始化准备状态–>result=”+result);  
  39. }  
  40.   
  41. //tearDown()会在每个测试之后调用  
  42. function tearDown(){  
  43.     result = null;  
  44.     warn(“清除或重置测试夹具–>result=”+result);  
  45. }  
  46.   
  47. //一次性启动方法,在所有测试函数(包括setUp())调用之前调用,主意该方法中不能有日志操作  
  48. function setUpPage(){  
  49.     result = 100;  
  50.     //完成后一定要设置这个,否则会进入阻塞状态    
  51.         setUpPageStatus = “complete”;   
  52. }  
  53. </script>   
  54. </HEAD>   
  55.   
  56. <BODY>   
  57. test page for testValidArgs();   
  58. </BODY>   
  59. </HTML> </pre><br>  
  60. <pre></pre>  
  61. <p></p>  
  62. <pre></pre>  
  63. <p></p>  
  64. <p><span style=“font-size:13px; color:#009933”>打开testRunner.html,在file里填上你的test01.html路径,选择debug日志级别,点击Run,出现测试结果,点击error信息会弹出具体信息:</span></p>  
  65. <p><span style=“font-size:13px; color:#009933”><img src=“http://hi.csdn.net/attachment/201111/17/0_1321517493y0PN.gif” alt=“”></span></p>  
  66. <p><span style=“font-size:13px; color:#009933”>点击Run后弹出的日志信息如下:</span></p>  
  67. <p><span style=“font-size:13px; color:#009933”><img src=“http://hi.csdn.net/attachment/201111/17/0_132151771397rY.gif” alt=“”></span></p>  
  68. <p><span style=“font-size:13px; color:#009933”>批量测试:</span></p>  
  69. <p><span style=“font-size:13px; color:#009933”></span></p><pre name=“code” class=“html”><!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>  
  70. <html>  
  71.   <head>  
  72.     <title>testSuite.html</title>  
  73.     <script language=“JavaScript” src=“../app/jsUnitCore.js”></script>  
  74.     <script type=“text/javascript”>  
  75.         function sampleSuite(){  
  76.             var sampleSuite = new JsUnitTestSuite();  
  77.             //向测试集中增加测试页  
  78.             sampleSuite.addTestPage(“tests/taobao_test.html”);  
  79.             return sampleSuite;  
  80.         }  
  81.         //必须提供一个名为suite()的方法,jsUnit才能识别测试集,并自动测试  
  82.         function suite(){  
  83.             var testSuite = new JsUnitTestSuite();  
  84.             //向测试集中增加其他的测试集  
  85.             testSuite.addTestSuite(sampleSuite());  
  86.             testSuite.addTestPage(“tests/ShopexCore_test.html”);  
  87.             return testSuite;  
  88.         }  
  89.     </script>  
  90.   </head>  
  91.     
  92.   <body>  
  93.     This is a simple test suite.   
  94.   </body>  
  95. </html>  
  96. </pre><br>  
  97. <br>  
  98. <p></p>  
  99. <p><span style=“font-size:13px; color:#009933”></span></p>  
  100. <pre></pre>  
  101.      
[html] view plain copy
print?
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  2. <HTML>   
  3. <HEAD>   
  4. <TITLE> my_jsUnit_test01</TITLE>   
  5. <script language="JavaScript" src="../app/jsUnitCore.js"></script>  
  6. <script language="JavaScript">  
  7. var result = null;  
  8.   
  9. function add(num1,num2){  
  10.     return num1+num2;  
  11. }  
  12. function multiply(num1,num2){  
  13.     return num1*num2;  
  14. }  
  15. //测试方式要以test开头,且不带有参数,jsUnit会自动识别test开头的测试方法并会运行它  
  16. function testAdd() {  
  17.     result = add(1,1);  
  18.     debug("add(1,1)="+result);  
  19.     assertEquals("1+1=2", 2, add(1,1));  
  20. }  
  21. //无效的测试方法  
  22. function multiplyTest(){  
  23.     result = multiply(2,3);  
  24.     debug("multiply(2,3)="+result);  
  25.         assertEquals("2*3=6", 5, multiply(2,3));  
  26. }  
  27. //如果找不到测试方法或要测试的方法不是以标准的test开头时,使用如下方法进行手动指定  
  28. function exposeTestFunctionNames() {   
  29.     var tests = new Array(2);   
  30.     tests[0] = "multiplyTest";   
  31.     tests[1] = "testAdd";   
  32.     return tests;   
  33. }  
  34. //setUp()会在每个测试之前调用  
  35. function setUp(){  
  36.     info("-->result="+result);  
  37.     result = 0;  
  38.     info("测试夹具,初始化准备状态-->result="+result);  
  39. }  
  40.   
  41. //tearDown()会在每个测试之后调用  
  42. function tearDown(){  
  43.     result = null;  
  44.     warn("清除或重置测试夹具-->result="+result);  
  45. }  
  46.   
  47. //一次性启动方法,在所有测试函数(包括setUp())调用之前调用,主意该方法中不能有日志操作  
  48. function setUpPage(){  
  49.     result = 100;  
  50.     //完成后一定要设置这个,否则会进入阻塞状态    
  51.         setUpPageStatus = "complete";   
  52. }  
  53. </script>   
  54. </HEAD>   
  55.   
  56. <BODY>   
  57. test page for testValidArgs();   
  58. </BODY>   
  59. </HTML>   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> my_jsUnit_test01</TITLE> <script language="JavaScript" src="../app/jsUnitCore.js"></script><script language="JavaScript">var result = null;function add(num1,num2){    return num1+num2;}function multiply(num1,num2){    return num1*num2;}//测试方式要以test开头,且不带有参数,jsUnit会自动识别test开头的测试方法并会运行它function testAdd() {    result = add(1,1);    debug("add(1,1)="+result);    assertEquals("1+1=2", 2, add(1,1));}//无效的测试方法function multiplyTest(){    result = multiply(2,3);    debug("multiply(2,3)="+result);        assertEquals("2*3=6", 5, multiply(2,3));}//如果找不到测试方法或要测试的方法不是以标准的test开头时,使用如下方法进行手动指定function exposeTestFunctionNames() {     var tests = new Array(2);     tests[0] = "multiplyTest";     tests[1] = "testAdd";     return tests; }//setUp()会在每个测试之前调用function setUp(){    info("-->result="+result);    result = 0;    info("测试夹具,初始化准备状态-->result="+result);}//tearDown()会在每个测试之后调用function tearDown(){    result = null;    warn("清除或重置测试夹具-->result="+result);}//一次性启动方法,在所有测试函数(包括setUp())调用之前调用,主意该方法中不能有日志操作function setUpPage(){    result = 100;    //完成后一定要设置这个,否则会进入阻塞状态          setUpPageStatus = "complete"; }</script> </HEAD> <BODY> test page for testValidArgs(); </BODY> </HTML> 

打开testRunner.html,在file里填上你的test01.html路径,选择debug日志级别,点击Run,出现测试结果,点击error信息会弹出具体信息:

点击Run后弹出的日志信息如下:

批量测试:

[html] view plain copy
print?
  1. <!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>  
  2. <html>  
  3.   <head>  
  4.     <title>testSuite.html</title>  
  5.     <script language=“JavaScript” src=“../app/jsUnitCore.js”></script>  
  6.     <script type=“text/javascript”>  
  7.         function sampleSuite(){  
  8.             var sampleSuite = new JsUnitTestSuite();  
  9.             //向测试集中增加测试页  
  10.             sampleSuite.addTestPage(“tests/taobao_test.html”);  
  11.             return sampleSuite;  
  12.         }  
  13.         //必须提供一个名为suite()的方法,jsUnit才能识别测试集,并自动测试  
  14.         function suite(){  
  15.             var testSuite = new JsUnitTestSuite();  
  16.             //向测试集中增加其他的测试集  
  17.             testSuite.addTestSuite(sampleSuite());  
  18.             testSuite.addTestPage(“tests/ShopexCore_test.html”);  
  19.             return testSuite;  
  20.         }  
  21.     </script>  
  22.   </head>  
  23.     
  24.   <body>  
  25.     This is a simple test suite.   
  26.   </body>  
  27. </html>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>testSuite.html</title>    <script language="JavaScript" src="../app/jsUnitCore.js"></script>    <script type="text/javascript">        function sampleSuite(){            var sampleSuite = new JsUnitTestSuite();            //向测试集中增加测试页            sampleSuite.addTestPage("tests/taobao_test.html");            return sampleSuite;        }        //必须提供一个名为suite()的方法,jsUnit才能识别测试集,并自动测试        function suite(){            var testSuite = new JsUnitTestSuite();            //向测试集中增加其他的测试集            testSuite.addTestSuite(sampleSuite());            testSuite.addTestPage("tests/ShopexCore_test.html");            return testSuite;        }    </script>  </head>  <body>    This is a simple test suite.   </body></html>


0 0