浏览 4318 次
锁定老帖子 主题:js的unit test实现(一)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-06
不知道有多少人会写js的unit test, 不过最近的项目对unittest要求比较严格.所以也养成了写unittest的习惯. 在搞js-shell时, 对写的代码没有做test,总是不放心. 找了一些资料看到JQuery的unit test方法不错. 学习了一下也在js-shell加入了Uinttest库. 总算把前面的代码都加上了UT才放心. var ut = __import__('UnitTest', null, {}) //导入Unitest 库 ut.run_suite('.') //运行Testsuite, 将运行当前目录下的所有以'test_'开头的js文件作为unittest运行.
2. 实现一个unitest, 创建test_hellotest.js
test("assertEqual", function() { //一个unittest, 名称为"assertEqual", function为 test的内容. assertEqual(10+ 20, 30) //一个比较断言,, }); test("assertEqual fail no message", function() { //一个失败的 unitest 例子. assertEqual(10+ 20, 31) }); test("assertEqual fail with message", function() { assertEqual(10+ 20, 31, "10+20 != 31") }); test("assertRaises expect raised", function() { //测试一个将要抛出异常的方法. assertRaises('Stop', function(m){throw m}, 'Stop') }); test("assertRaises mismatch raised", function() { assertRaises('Stop', function(m){throw m}, 'Start') }); test({ //实现一个Unittest对象, 包含setUp, tearDown. setUp: function(){ //一个setUp, 在每个test方法调用之前调用. this.msg = "enter setUp"; info('enter setUp'); //在Test中输出消息. }, test_basic_requirements: function(){ //一个方法内的test, 方法名必须以"test_"开头 info('running test_basic_requirements'); assertEqual(this.msg, "enter setUp") this.msg = 'test_basic_requirements' }, test_setUp_called_for_every_functional: function(){ info('test_setUp_called_for_every_functional'); assertEqual(this.msg, "enter setUp") this.msg = 'test_setUp_called_for_every_functional' }, tearDown: function(){ //在每个test调用用调用. this.msg = "enter tearDown"; info('enter tearDown'); }, }); 3. 运行unit test
C:\utest>js run_unit_test.js [INFO]:Start test file:C:\utest\test_hellotest.js assertEqual...PASS in 0ms assertEqual fail no message...FAIL in 16ms expected: 31, actual: 30 assertEqual fail with message...FAIL in 0ms 10+20 != 31 assertRaises expect raised...PASS in 0ms assertRaises mismatch raised...FAIL in 0ms expected exception:Stop, catched:Start [INFO]test_setUp_called_for_every_functional:enter setUp [INFO]test_setUp_called_for_every_functional:test_setUp_called_for_every_functio nal [INFO]test_setUp_called_for_every_functional:enter tearDown test_setUp_called_for_every_functional...PASS in 31ms [INFO]test_basic_requirements:enter setUp [INFO]test_basic_requirements:running test_basic_requirements [INFO]test_basic_requirements:enter tearDown test_basic_requirements...PASS in 16ms ----------------------------------------------------------- Ran 7 tests in 63ms FAILED! Pass:4, Failed:3
这是一个简单的Unit, test. 测试的输出和UnitTest中的断言方法都可以自定义. 下次将介绍如何定义assert方法.
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-06
。。。
UI部分怎么test? |
|
返回顶楼 | |
发表时间:2008-09-06
js-shell项目中现在还没有考虑UI部分.现在的代码都是在浏览器外运行的. 非要实现UI也是swing,而不是html.
UI部分的测试可以用Browser库试试解析DOM, 不过Browser都没有测试过,不知道能用不. |
|
返回顶楼 | |