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

javascript 简单的单元测试代码

javascript向来是最让人头痛的。现在敏捷开发成了一种趋势,当然javascript也要有单元测试的东东。

现在网上有很多JS单元测试的框架,比如Qunit以及Junit等。

随着nodeJS的发展,javascript也开始有自己的后端,更加需要单元测试保证代码的质量。

?

因为本人原生是java程序员,所以对Junit的方式比较熟悉,但市面上的写法都是JS的写法,所以有些不习惯。因此本人写了一个较为简单的unit书写工具(切忌不是框架)。

?

本代码用git版本管理,挂在git-hub上,https://LeiChen@github.com/LeiChen/JunitS.git

页面 :?https://github.com/LeiChen/JunitS

?

特点:

  1. 支持nodeJS
  2. 类似java的书写方式
  3. 基本的assert
  4. 自定义报告

?

浏览器based的写法:

<script type="text/javascript">
		var testcase = unit.TestSuite.create();
		testcase.testInt = function(){
			this.assertEqual("fail to test 1 == 1 ",1,1);
		};

		testcase.testTrueFail= function(){
			this.assertTrue(false);
		};

		new unit.TestSuite().add(testcase).run();
	</script>

?

nodeJS的写法:

var unit = require(__dirname + '/../main/unitjs.js');
//define render for jsnode
var render = function (errors,tol,sucs) {
	if(0 == errors.length) {
		console.log("all success");
		return ;
	}

	var content = "";
	for(var i in errors) {
		content += errors[i].method+"|";
	}
	console.log("test fail method :" + content);
};

unit.TestSuite.init(render);
var simpleTestCase = unit.TestSuite.create();
//define test method
simpleTestCase.test_int = function() {
	assertEqual("1 equals 1 fail)", 2, 1);
	assertEqual(2,1);
};

new unit.TestSuite().add(simpleTestCase).run();

?

自定义渲染结果:

<html>
	<head>
		<title>This is an example for testsuite render</title>
	</head>
	<body></body>

	<script type="text/javascript" src="../src/main/unitjs.js"></script>
	<script type="text/javascript">
		var render = function(errors,total,success) {
			var str = "This is overrided result render:#t#/<font size='4' color='green'>#s#</font>/<font size='4' color='red'>#f#</font>";
			document.body.innerHTML = str.replace(/#t#/,total).replace(/#s#/,success).replace(/#f#/,(total-success));
		};
		unit.TestSuite.init(render);
		var testcase = unit.TestSuite.create();
		testcase.testInt = function(){
			this.assertEqual("fail to test 1 == 1 ",1,1);
		};

		testcase.testTrueFail= function(){
			this.assertTrue(false);
		};

		new unit.TestSuite().add(testcase).run();
	</script>
</html>
?