javascript是很容易让人头疼的语言,不过如果能引入单元测试,那你的头疼似乎能得到些许的减缓。现在已经有一些javascript的单元测试工具存在了,今天我要介绍的是Dr Nic Williams开发的
JsUnitTest – JavaScript Unit Testing framework
JsUnitTest是一个纯用javascript开发的单元测试框架,通过引入它,你在浏览器中就可以运行你的单元测试代码。
JsUnitTest的使用:
1、从http://jsunittest.com/ 下载最新的JsUnitTest代码。
2、创建一个测试用的html,在这个html中引入你要测试的类库和JsUnitTest的js和css文件,并建立一个id为testlog的div块用来显示测试结果。
3、编写单元测试
new Test.Unit.Runner({ setup: function() { }, teardown: function() { }, testMethod1: function() { with(this) { }}, });
以下是一个完整的单元测试示例:
<html>
<head>
<title>test</title>
<script src="jsunittest.js" type="text/javascript"></script>
<link rel="stylesheet" href="unittest.css" type="text/css" />
<script>
var MyObject = function(){};
MyObject.prototype.method1 = function(){return 1;};
</script>
</head>
<body>
<div id="testlog"></div>
<script type="text/javascript">
new Test.Unit.Runner({
myObj: null,
setup: function() {
this.myObj = new MyObject();
},
teardown: function() {
this.myObj = null;
},
testMethod1: function() { with(this) {
assert(this.myObj.method1() == 2, "method1 return must be 2.");
}},
});
</script>
</body>
</html>
JsUnitTest支持的断言方法:
assert: function(expression, message) assertEqual: function(expected, actual, message) assertNotEqual: function(expected, actual, message) assertEnumEqual: function(expected, actual, message) assertEnumNotEqual: function(expected, actual, message) assertHashEqual: function(expected, actual, message) assertHashNotEqual: function(expected, actual, message) assertIdentical: function(expected, actual, message) assertNotIdentical: function(expected, actual, message) assertNull: function(obj, message) assertNotNull: function(obj, message) assertUndefined: function(obj, message) assertNotUndefined: function(obj, message) assertNullOrUndefined: function(obj, message) assertNotNullOrUndefined: function(obj, message) assertMatch: function(expected, actual, message) assertNoMatch: function(expected, actual, message) assertHasClass: function(element, klass, message) assertHidden: function(element, message) assertInstanceOf: function(expected, actual, message) assertNotInstanceOf: function(expected, actual, message) assertRespondsTo: function(method, obj, message) assertRaise: function(exceptionName, method, message) assertNothingRaised: function(method, message) assertVisible: function(element, message) assertNotVisible: function(element, message) assertElementMatches: function(element, expression, message)