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
?
特点:
- 支持nodeJS
- 类似java的书写方式
- 基本的assert
- 自定义报告
?
浏览器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>?