yidabu 2007-4-28 18:44
D语言检查测试代码覆盖率
D语言检查测试代码覆盖率知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070428点击下面网址查看原文:http://www.d-programming-language-china.org by: qiezi from: http://qiezi.javaeye.com/blog/35513 测试写到什么程度算足够? 这个帖子对单元测试作了些探讨,代码覆盖率检查是检验单元测试的一项指标。 DMD编译器内建了代码覆盖率检查,根据上面这个帖子我们写一个测试: 代码 [Copy to clipboard] [ - ]CODE: int oddNumber(int index){ switch (index){ case 1: return 1; case 2: return 2; case 3: return 5; case 4: return 8; } throw new Exception("Unsupported operation"); } unittest{ assert(oddNumber(1) == 1); assert(oddNumber(2) == 2); assert(oddNumber(4) == 8 ); } void main(){ } 编译: 代码 [Copy to clipboard] [ - ]CODE: dmd test.d -unittest -cov -cov选项打开覆盖率检查,-unittest是unittest块的编译开关,空的main函数是必要的,它并不为单元测试自动生成启动函数。( 本文出处: http://www.d-programming-language-china.org ) 执行: 代码 ./test 会生成test.lst文件,内容如下: 代码 [Copy to clipboard] [ - ]CODE: $ cat test.lst |int oddNumber(int index){ 3| switch (index){ 2| case 1: return 1; 2| case 2: return 2; 0000000| case 3: return 5; 2| case 4: return 8; | } 0000000| throw new Exception("Unsupported operation"); |} | |unittest{ 1| assert(oddNumber(1) == 1); 1| assert(oddNumber(2) == 2); 1| assert(oddNumber(4) == 8 ); |} | |void main(){ |} test.d is 77% covered 只需要grep一下"0000000|"即可找到没有测试到的地方,如果有好的IDE就方便了。( 本文出处: http://www.d-programming-language-china.org ) 更详细的资料请看这里: http://digitalmars.com/d/code_coverage.html( lastupdate:20070428 最新文章请访问http://www.d-programming-language-china.org )关于一大步成功社区:yidabu提倡在交流中学习,在分享中提高收集感兴趣的知识,写下心得,通过网络与别人一起分享理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台