1. javaScript编码规范:通常在javaScript不希望被外界访问的成员和方法名以下划线开始,JUnit是java的单元测试,JsUnit是javaScript的单元测试
**2.**编写自己的测试用例:
第一步,如果某个页面包含了jsUnitCore.js文件,那么这个页面就是jsUnit的测试页面,所以必须要将jsUnitCore.js文件引入到需要测试的页面:
<script type="text/javascript" src="C:\jsUnit\jsunit\app\jsUnitCore.js"></script>
第二步,编写测试内容,和测试函数,jsUnit测试函数要遵循的规则与JUnit3.8类似(比如说测试函数名以test开头等)
<script type="text/javascript">
function add(num1,num2) {
return num1+num2;
}
function subtract(num1,num2) {
return num1-num2;
}
function multiply(num1,num2) {
return num1*num2;
}
//以下为测试函数(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);
}
</script>
我们一般将要测试的js内容单独放在一个js文件中,然后在开头引入这个js文件
<script type="text/javascript" src="C:\jsUnit\test1.js"></script>
补充:
1.什么是setUp()和tearDown()函数?注意第二个单词大写。
在jsUnit中
♦setUp()函数是在众多函数或者说是在一个类类里面最先被调用的函数,而且每执行完一个函数都要从setUp()调用开始后再执行下一个函数,有几个函数就调用他几次,与位置无关,随便放在那里都是他先被调用。
♦ tearDown()函数是在一个测试函数执行完后他才被执行,意思就是不管这个类里面有多少函数,他总是最后一个被执行的,与位置无关,放在那里都行,最后不管测试函数是否执行成功都执行tearDown()方法,
♦执行顺序serUp()-测试函数-tearDown()
2.为什么我们要用setUp()和tearDown()函数?
♦ 我们利用这一特性在自动化中setup主要是进行测试前的初始化工作,比如在接口测试前面做一些前置的参数赋值,数据库操作等等 teardown是测试后的清除工作,比如参数还原或销毁,数据库的还原恢复等
**3.**对于jsUnit来说,其setUp和tearDown方法与JUnit的运行原理是不同的,JUnit中的setUp和tearDown之间是没有关系的,也就是说不同的测试方法运行在不同的测试对象之中,而JsUnit的各个测试函数是运行在一个测试页面中,因此setUp和tearDown会针对同一个变量进行操作
4.
//此函数只会执行一次,(在页面加载后)类似JUnit4.x中的@BeforeClass
function setUpPage() {
alert("setUpPage")
//这行代码必须放在setUpPage函数最后一行,告诉JsUnit,setUpPage函数已经执行完毕。如果没加,测试页面就停止了
setUpPageStatus="complete"; //修改状态为complete完成
}
5.
做一个小练习:要求页面3个text框,一个按钮,点击按钮前2个框相加在第三个框显示和:
jsUnitTest.html:测试文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="C:\jsUnit\jsunit\app\jsUnitCore.js"></script>
<script type="text/javascript" src="C:\jsUnit\test1.js"></script>
<script type="text/javascript">
//在setUp中获取到要测试的元素并设置值
function setUp() {
document.getElementById("value1").value=2;
document.getElementById("value2").value=3;
}
//在tearDown中进行收尾处理,抹去痕迹
function tearDown() {
document.getElementById("value1").value="";
document.getElementById("value2").value="";
document.getElementById("value3").value="";
}
//以下为测试函数(Test Function)
//测试函数获取将5和第三个框的值进行比较,这里注意,我们设置的5是number类型的,而不加parseInt的话获取的是String类型的,所以要么为后面的加上paeseInt转换,要么为5加上“5”,表示字符串
function testAddNumber() {
addNumber();
assertEquals(5,parseInt(document.getElementById("value3").value)); // assert断言
}
</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" id="add1" onclick="addNumber();">
</body>
</html>
test1.js:javaScript事件处理文件
//对onclick的处理
function addNumber() {
var v1=parseInt(document.getElementById("value1").value);
var v2=parseInt(document.getElementById("value2").value);
var v3=v1+v2;
document.getElementById("value3").value=v3;
}
**6.**套件
JsUnitTestSuite(js单元测试套件)
1)在测试套件里面增加一个测试页面
//这边的src如果是一个相对路径,那么是根据当前页面的相对路径
<script type="text/javascript" src="C:\jsUnit\jsunit\app\jsUnitCore.js"></script>
<script type="text/javascript">
//测试套件名称一定为suite
function suite() {
var testSuite=new top.jsUnitTestSuite();
//如果增加的测试页面的路径是相对路径那么是相对于测试运行器(testRunner.html)的路径,而不是当前页面
testSuite.addTestPage("E:\\Java\\ideaproject\\myballot\\web\\js\\jsUnitTest.html"); //注意这边addTestPage后面是括号不是=号
testSuite.addTestPage("E:\\Java\\ideaproject\\myballot\\web\\js\\jsUnitTest.html");
testSuite.addTestPage("E:\\Java\\ideaproject\\myballot\\web\\js\\jsUnitTest.html");
return testSuite;
}
</script>
2)在测试套件里面增加一个测试套件
<script type="text/javascript">
function mySuite() {
var testSuite=new top.jsUnitTestSuite();
testSuite.addTestPage("E:\\Java\\ideaproject\\myballot\\web\\js\\jsUnitTest.html");
testSuite.addTestPage("E:\\Java\\ideaproject\\myballot\\web\\js\\jsUnitTest.html");
testSuite.addTestPage("E:\\Java\\ideaproject\\myballot\\web\\js\\jsUnitTest.html");
return testSuite;
}
function suite() {
var testSuite=new top.jsUnitTestSuite();
testSuite.addTestPage("E:\\Java\\ideaproject\\myballot\\web\\js\\jsUnitTest.html");
testSuite.addTestSuite(mySuite());
return testSuite;
}
</script>