1 JavaScript单元测试(jsUnit):http://www.jsunit.net/
注意:
5 testsuit 示例
test1.html
test2.html
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">
//测试套件名一定为suite
function 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>