51 js-unit

来源:互联网 发布:java聚类分析 编辑:程序博客网 时间:2024/06/07 14:14
1 JavaScript单元测试(jsUnit):http://www.jsunit.net/

2 JavaScript编码规范:通常在JavaScript不希望外界访问的成员和方法名以下划线开始。

3 jsUnit测试函数的要遵循的规则与JUnit 3.8类似(比如说测试函数名以test开头等)

示例:一个简单的测试

<script type="text/javascript"src="..\jsunit2_2\jsunit\app\jsUnitCore.js"></script><script type="text/javascript">function add(num1, num2){return num1 + num2;}function testAdd(){result=add(1, 2);assertEquals(4,result);}</script>

注意:

(1) 需要引入jsunit资源文件,“..”代表返回上一层目录

(2) 运行测试需要运行\jsunit2_2\jsunit\testRunner.html页面

(3) 测试页面在IE中打开较为方便

4 对于JsUnit来说,其setUp和tearDown方法与JUnit的运行原理是不同的,JUnit中的setUp和tearDown之间是没有关系的,也就是说不同的测试方法运行在不同的测试对象之中,而JsUnit的各个测试函数是运行在同一个测试页面中。因此setUp和tearDown会针对同一个变量进行操作。


function setUp()  {//alert(count++);document.getElementById("value1").value = 2;document.getElementById("value2").value = 3;  }  function tearDown()  {//alert("tearDown");document.getElementById("value1").value = "";document.getElementById("value2").value = "";document.getElementById("value3").value = "";  }

5 testsuit 示例

test1.js

function add(num1, num2)  {return num1 + num2;  }  function subtract(num1, num2)  {return num1 - num2;  }  function multiply(num1, num2)  {return num1 * num2;  }  function addNumbers()  {var v1 = document.getElementById("value1").value;var v2 = document.getElementById("value2").value;v1 = parseInt(v1);v2 = parseInt(v2);var v3 = v1 + v2;document.getElementById("value3").value = v3;  }

test1.html

<script type="text/javascript" src="..\jsunit2_2\jsunit\app\jsUnitCore.js"></script>  <script type="text/javascript" src="test1.js"></script>  <script type="text/javascript">  var count = 0;  // 此函数只执行一次(在页面加载后),类似于JUnit 4.x中的@BeforeClass  // 注意:并没有与@AfterClass对应的函数存在  function setUpPage()  {alert('setUpPage Invoked');    // 这行代码必须放在setUpPage函数的最后一行// 告诉JsUnit,setUpPage函数已经执行完毕setUpPageStatus = "complete";   }    function setUp()  {//alert(count++);document.getElementById("value1").value = 2;document.getElementById("value2").value = 3;  }  function tearDown()  {//alert("tearDown");document.getElementById("value1").value = "";document.getElementById("value2").value = "";document.getElementById("value3").value = "";  }  // 以下为测试函数(Test Function)    function testAdd()  {var result = add(1, 2);assertEquals(3, result);  }  function testSubtract()  {var result = subtract(1, 2);assertEquals(-1, result);  }  function testMultiply()  {var result = multiply(1, 2);assertEquals(2,result);  }  function testAddNumbers()  {addNumbers();assertEquals("5", document.getElementById("value3").value);  }  </script>

test2.html

<script type="text/javascript">//测试套件名一定为suitefunction suite(){var testSuite = new top.jsUnitTestSuite();    // 增加的测试页面的路径是相对于测试运行器(testRunner.html)的路径// 而不是当前页面testSuite.addTestPage("../../jsUnit_code/test1.html");testSuite.addTestPage("../../jsUnit_code/test1.html");testSuite.addTestPage("../../jsUnit_code/test1.html");return testSuite;}</script>













0 0
原创粉丝点击