日期:2014-05-16  浏览次数:20295 次

使用QUnit进行Javascript单元测试

        相信大家都对JUnit并不陌生,虽然在国内使用JUnit真正进行单元测试的人应该并不是十分普及(估计大家都是自己简单进行测试,很少能使用JUnit进行回归测试等),但是这依然不能改变单元测试的重要性。而随着Javascript的崛起,大量的功能被放在了前端而非中端,这就需要我们对Javascript的相关代码进行单元测试。Qunit是JS代码测试工具中比较流行的,以前是Jquery团队内部测试Jquery库的工具,目前已经与jquery分割出来,可以独立使用。下面,我就做个例子简单说明如何使用Qunit进行JS代码单元测试。

        一般情况下,我们会将js代码嵌入jsp/html等文件中,而测试代码最好单独创建文件。我们以test.js包含测试代码,demo.js包含功能性js代码,example.html为运行qunit的页面文件。代码如下:

example.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>QUnit 测试</title>
    <link rel="stylesheet" href="css/qunit.css" type="text/css"></link>
    <script type="text/javascript" src="qunit.js"></script>		
    <script type="text/javascript" src="demo.js"></script>
    <script type="text/javascript" src="test.js"></script>
</head>
<body>
    <h1 id="qunit-header">QUnit 测试</h1>
    <h2 id="qunit-banner"></h2>
    <div id="qunit-testrunner-toolbar"></div>
    <h2 id="qunit-userAgent"></h2>
    <ol id="qunit-tests"></ol>
    <div id="qunit-fixture">test markup</div>
</body>
</html>
        其中大部分代码都不需要修改,只需要根据实际情况在<head></head>中引入qunit.js和test.js以及demo.js文件即可。qunit会自动识别并运行测试代码。
demo.js
//检查数字是否为非负整数
function checkNum(n){
    var integerReg = /^\d+$/;
    if(n.match(integerReg) 
        return true;
    else
        return false;
    }
test.js
module ("非负整数检查");
test("check number", function(){
    var result1 = checkNum(20);
    equal(result1, true, "不是非负整数");
		
    var result2 = checkNum(-10);
    equal(result2, false, "是非负整数");
	
    var result3 = checkNum(-0);
    equal(result3, true, "不是非负整数");
	
    var result4 = checkNum(0);
    equal(result4, true, "不是非负整数");

    var result5 = checkNum(12.3);
    equal(result5, false, "是非负整数");
}); 
       在浏览器中打开example.html页面显示效果如图,代码都非常简单,我们可以基于此对js的函数做到“心中有数”,代码修改后做回国测试非常方便快捷。