jsUnit测试框架
2011-06-11 23:04
295 查看
jsUnit测试函数的要遵循的规则与JUnit 3.8类似(比如说测试函数名以test开头等)
对于JsUnit来说,其setUp和tearDown方法与JUnit的运行原理是不同的,JUnit中的setUp和tearDown之间是没有关系的,也就是说不同的测试方法运行在不同的测试对象之中,而JsUnit的各个测试函数是运行在同一个测试页面中。因此setUp和tearDown会针对同一个变量进行操作。
一个完整的例子:
<script type="text/javascript" src="../jsunit2_2/jsunit/app/jsUnitCore.js"></script>//要把那个js文件包含进来
<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>
</head>
<body>
<input type="text" id="value1"><br>
<input type="text" id="value2"><br>
<input type="text" id="value3"><br>
<input type="button" value="Add" onclick="addNumbers();">
</body>
测试套件:
//测试套件名一定为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;//要返回他
}
在测试套件中又加上测试套件,组合模式
function mySuite()
{
var testSuite = new top.jsUnitTestSuite();
testSuite.addTestPage("../../jsUnit_code/test1.html");
testSuite.addTestPage("../../jsUnit_code/test1.html");
testSuite.addTestPage("../../jsUnit_code/test1.html");
return testSuite;
}
function suite()
{
var testSuite = new top.jsUnitTestSuite();
testSuite.addTestPage("../../jsUnit_code/test1.html");
testSuite.addTestSuite(mySuite());
return testSuite;
}
对于JsUnit来说,其setUp和tearDown方法与JUnit的运行原理是不同的,JUnit中的setUp和tearDown之间是没有关系的,也就是说不同的测试方法运行在不同的测试对象之中,而JsUnit的各个测试函数是运行在同一个测试页面中。因此setUp和tearDown会针对同一个变量进行操作。
一个完整的例子:
<script type="text/javascript" src="../jsunit2_2/jsunit/app/jsUnitCore.js"></script>//要把那个js文件包含进来
<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>
</head>
<body>
<input type="text" id="value1"><br>
<input type="text" id="value2"><br>
<input type="text" id="value3"><br>
<input type="button" value="Add" onclick="addNumbers();">
</body>
测试套件:
//测试套件名一定为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;//要返回他
}
在测试套件中又加上测试套件,组合模式
function mySuite()
{
var testSuite = new top.jsUnitTestSuite();
testSuite.addTestPage("../../jsUnit_code/test1.html");
testSuite.addTestPage("../../jsUnit_code/test1.html");
testSuite.addTestPage("../../jsUnit_code/test1.html");
return testSuite;
}
function suite()
{
var testSuite = new top.jsUnitTestSuite();
testSuite.addTestPage("../../jsUnit_code/test1.html");
testSuite.addTestSuite(mySuite());
return testSuite;
}
相关文章推荐
- Ruby中的TestUnit测试框架
- Flex4之测试框架--FlexUnit
- Python Unittest 自动化单元测试框架Demo
- javaScript的单元测试框架Unit.js介绍
- python测试框架——unittest和nosetest
- 关于node.js的web框架的微信h5牌九平台开发及并发性能测试
- python测试框架——unittest和nosetest
- 最受欢迎的 5 款 Node.js 端到端测试框架
- Python接口测试之unittest框架(五)
- JS相关环境搭建:Nodejs、karma测试框架、jsDuck、Express
- Unit Test测试框架中的测试的执行顺序
- 论坛源码推荐(1月17日):Objective-C测试框架-GHUnit 实现多个侧边栏菜单效果-TheSidebarC
- Python Unittest自动化单元测试框架详解
- python的unittest测试框架的扩展浅谈
- Python接口测试之unittest框架(五)
- python测试框架——unittest和nosetest
- unittest框架及自动化测试
- node.js 压力测试框架.01
- phpunit测试框架
- 百度电子图表js框架(附js软件测试报告demo)