测试写到什么程度算足够? 这个帖子对单元测试作了些探讨,代码覆盖率检查是检验单元测试的一项指标。
DMD编译器内建了代码覆盖率检查,根据上面这个帖子我们写一个测试:
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(){
}
编译:
dmd test.d -unittest -cov
-cov选项打开覆盖率检查,-unittest是unittest块的编译开关,空的main函数是必要的,它并不为单元测试自动生成启动函数。
执行:
./test
会生成test.lst文件,内容如下:
$ 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://digitalmars.com/d/code_coverage.html
分享到:
相关推荐
代码覆盖率检查活动确保了开发团队遵循良好的测试实践,比如单元测试,以提高软件质量。在CI流程中,每次代码提交后,CodeCoverageCheck Activity都会运行,分析新的或修改过的代码是否达到了预定的覆盖率阈值。如果...
5. **覆盖率分析**:如果在VCS编译时启用了覆盖率收集,Verdi可以显示各种类型的覆盖率,包括语句覆盖率、条件覆盖率等,帮助评估设计的测试完整性。 6. **调试会话**:Verdi还支持多线程调试、信号比较、时序分析...
SonarQube的核心功能包括静态代码分析、代码复杂度计算、代码重复度检查、单元测试覆盖率报告、代码异味检测以及安全漏洞识别。通过这些功能,SonarQube能够帮助开发团队在编码阶段就发现并修复问题,从而提升软件...
- 测试报告:汇总测试结果,分析测试覆盖率和缺陷情况。 - 回归测试:修复后重新测试,确保问题已解决。 - 测试结束:评估测试效果,总结经验教训,为后续项目提供参考。 以上是试卷中涉及的主要C系语言知识和...
白盒测试的优点包括增大代码覆盖率、提高代码质量以及发现代码中的问题,但它与软件的内部实现密切相关,因此选项B不正确。 【组装测试】 组装测试,也称为集成测试,发生在单元测试之后,是将模块合并并测试它们...
- 逻辑覆盖测试是一种白盒测试技术,旨在提高代码覆盖率。 - **选项解析**: - A. 语句覆盖:确保每个可执行语句至少被执行一次。 - B. 判定覆盖:确保每个判定表达式的结果都至少被执行一次。 - C. 条件覆盖:...
该系统适用于不同层次的功能验证,并具有与设计环境紧密集成、启发式及全随机测试、数据及协议建模、功能代码覆盖率分析等特点。 ##### 3. VMT在USBD验证中的应用 VMT(Vera Verification Model Technology,Vera...
通过`main.go`中的代码,我们可以学习到如何组织和编写测试,以及如何利用Go的测试工具进行代码覆盖率分析,从而确保代码的稳定性和可靠性。同时,"README.txt"文件为理解项目和测试流程提供了额外的帮助。
4. 强大的图形用户界面和调试工具,如Tcl/Tk定制功能和全面的代码覆盖率报告。 5. 集成的性能分析器有助于定位仿真性能瓶颈。 6. 灵活的执行模式,包括Debug模式和效率模式,以适应不同的调试需求。 7. 支持加密IP,...
在Go的工具链中,除了编译器外,还有其他重要的组件,如`addr2line`用于地址到源代码行的映射,`asm`用于汇编代码的处理,`buildid`用于跟踪构建标识,`cover`支持代码覆盖率测试,`doc`生成文档,`fix`修复旧版本的...
良好的测试覆盖率是保证组件质量的关键。 6. **状态管理**:在大型应用中,状态管理是不可或缺的一部分。项目可能使用Redux、Vuex或类似的库来管理全局状态,确保组件之间的数据流动有序且可预测。 7. **UI组件**...
- **测试覆盖率**:确保自动化测试覆盖所有重要的功能点是一项挑战。 - **兼容性问题**:不同的浏览器和操作系统可能会导致测试结果不一致。 ##### 4.2 解决方案 - **持续集成**:通过持续集成工具自动运行测试,...
3. **覆盖率**:学习如何衡量和跟踪设计验证的进度,包括功能覆盖率、代码覆盖率等。 4. **仿真工具**:了解如何使用常见的Verilog仿真器,如Icarus Verilog、ModelSim等,运行和调试设计。 5. **约束随机化**:...
- 提高测试覆盖率:能够更全面地测试代码的各种路径,包括异常情况。 - 快速测试:避免了启动真实服务或数据库的开销,测试运行速度更快。 - 易于维护:当接口改变时,只需更新模拟对象,而不用修改测试代码。 5...
而“语句覆盖”是一种代码级别的测试技术,主要用于单元测试阶段,不太适合直接应用于移动终端的应用测试。 9. **参数数量计算:** - **选项分析:** - 参数{URL}在脚本中出现了3次,迭代次数为5次,且参数设置为...
选项A表示当达到所有要求的覆盖率时,这是一个较为严格的停止标准,适用于那些追求高度可靠性的项目。选项B表示执行了所有的测试用例但没有发现任何故障,这在实际操作中很少发生,因为即使执行了所有测试用例,也...
语句覆盖:只检查代码中每个语句是否被执行。 - B. 路径覆盖:完全覆盖所有可能的执行路径,是最强的覆盖标准。 - C. 条件组合覆盖:覆盖所有条件组合的可能性,较强。 - D. 判定覆盖:覆盖所有的判定结果,较弱...