如果你已经了解JUnit或者PyUnit, 那么你应该不会花超过10分钟学会使用JSUnit, JSUnit是用来对Javascript代码做单元测试的测试框架,是JS版本的JUnit。
通过下面5个简单的步骤你可以很快学会使用JSUnit:
(1) 下载JSUnit的压缩包然后解压到本地目录。
http://sourceforge.net/projects/jsunit/files/latest/download
(2) 创建一个简单的Javascript函数计算a和b两个数的和,然后把这段code存到本地文件’myAdd.js’
//myAdd.js
Function add(x,y) {
Return x+y;
}
(3) 创建一个html文件名字为’testMyAdd.html’。
在这个文件的开头,将JSUnit的源文件和你刚才编写的’myAdd.js’引入进来。在body的部分,写出像下面一样的测试代码。和Junit和PyUnit一样,测试方法一般都以test开头。
<html>
<head>
<title>Test my function</title>
<script type="text/javascript" src="junit/jsUnitCore.js"></script>
<script type="text/javascript" src="myAdd.js"></script>
</head>
<body>
<script type="text/javascript">
function setUp() {
//alert("test");
}
function tearDown() {
//alert("test");
}
function testAdd() {
assertEquals("", 3, add(2, 1));
}
function testAdd2() {
assertNotEquals("", 0, add(2, 1));
}
</script>
</body>
</html>
(4) 在第一步的解压文件目录中,找到文件“testRunner.html”并且用浏览器打开。
(5) 在打开的页面中,输入你在第三步创建的testAdd.html文件地址然后点击run按钮。当testRunner.html加载页面的时候,它会自动找到你写的test case 方法然后顺序执行。
另外,JSUnit的包中也包含了一些对框架代码(jsUnitCore.js)的测试页面,你可以把它们的URL添加到需要run的url中执行。
比如在jsUnitCore.js中有一个trim方法,是去掉字符首尾的空格:
JsUnit.Util.trim = function(string) {
if (string == null)
return null;
var startingIndex = 0;
var endingIndex = string.length - 1;
var singleWhitespaceRegex = /\s/;
while (string.substring(startingIndex, startingIndex + 1).match(singleWhitespaceRegex))
startingIndex++;
while (string.substring(endingIndex, endingIndex + 1).match(singleWhitespaceRegex))
endingIndex--;
if (endingIndex < startingIndex)
return '';
return string.substring(startingIndex, endingIndex + 1);
}
测试代码如下:
function testTrim() {
assertEquals(null, JsUnit.Util.trim(null));
assertEquals(null, JsUnit.Util.trim(JSUNIT_UNDEFINED_VALUE));
assertEquals("", JsUnit.Util.trim(""));
assertEquals("", JsUnit.Util.trim(" "));
assertEquals("string", JsUnit.Util.trim("string"));
assertEquals("str ing", JsUnit.Util.trim("str ing"));
assertEquals("string", JsUnit.Util.trim(" string "));
assertEquals("string", JsUnit.Util.trim("\r\n string \r\n"));
}
通过编写类似的js 单元测试代码,你可以在有效分离js的页面和逻辑的基础上,很好的进行对逻辑部分的单元测试。