`
qiezi
  • 浏览: 498610 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

D语言检查测试代码覆盖率

    博客分类:
  • D
阅读更多
测试写到什么程度算足够? 这个帖子对单元测试作了些探讨,代码覆盖率检查是检验单元测试的一项指标。

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
分享到:
评论

相关推荐

    CodeCoverageCheck Activity

    代码覆盖率检查活动确保了开发团队遵循良好的测试实践,比如单元测试,以提高软件质量。在CI流程中,每次代码提交后,CodeCoverageCheck Activity都会运行,分析新的或修改过的代码是否达到了预定的覆盖率阈值。如果...

    VCS和verdi的实现编译verilog代码

    5. **覆盖率分析**:如果在VCS编译时启用了覆盖率收集,Verdi可以显示各种类型的覆盖率,包括语句覆盖率、条件覆盖率等,帮助评估设计的测试完整性。 6. **调试会话**:Verdi还支持多线程调试、信号比较、时序分析...

    sonarqube-9.0.1.46107.zip

    SonarQube的核心功能包括静态代码分析、代码复杂度计算、代码重复度检查、单元测试覆盖率报告、代码异味检测以及安全漏洞识别。通过这些功能,SonarQube能够帮助开发团队在编码阶段就发现并修复问题,从而提升软件...

    软件专业_企业面试试卷(侧重C系语言)06

    - 测试报告:汇总测试结果,分析测试覆盖率和缺陷情况。 - 回归测试:修复后重新测试,确保问题已解决。 - 测试结束:评估测试效果,总结经验教训,为后续项目提供参考。 以上是试卷中涉及的主要C系语言知识和...

    软件测试练习题很经典

    白盒测试的优点包括增大代码覆盖率、提高代码质量以及发现代码中的问题,但它与软件的内部实现密切相关,因此选项B不正确。 【组装测试】 组装测试,也称为集成测试,发生在单元测试之后,是将模块合并并测试它们...

    软件测试工程师面试宝典

    - 逻辑覆盖测试是一种白盒测试技术,旨在提高代码覆盖率。 - **选项解析**: - A. 语句覆盖:确保每个可执行语句至少被执行一次。 - B. 判定覆盖:确保每个判定表达式的结果都至少被执行一次。 - C. 条件覆盖:...

    VMT在USBD模块验证中的应用.pdf

    该系统适用于不同层次的功能验证,并具有与设计环境紧密集成、启发式及全随机测试、数据及协议建模、功能代码覆盖率分析等特点。 ##### 3. VMT在USBD验证中的应用 VMT(Vera Verification Model Technology,Vera...

    go代码-golang测试

    通过`main.go`中的代码,我们可以学习到如何组织和编写测试,以及如何利用Go的测试工具进行代码覆盖率分析,从而确保代码的稳定性和可靠性。同时,"README.txt"文件为理解项目和测试流程提供了额外的帮助。

    Modelsim与Questasim两个版本的区别,主要是在功能上进行说明

    4. 强大的图形用户界面和调试工具,如Tcl/Tk定制功能和全面的代码覆盖率报告。 5. 集成的性能分析器有助于定位仿真性能瓶颈。 6. 灵活的执行模式,包括Debug模式和效率模式,以适应不同的调试需求。 7. 支持加密IP,...

    2.7 Go toolchain internals and implementation based on arm64.pdf

    在Go的工具链中,除了编译器外,还有其他重要的组件,如`addr2line`用于地址到源代码行的映射,`asm`用于汇编代码的处理,`buildid`用于跟踪构建标识,`cover`支持代码覆盖率测试,`doc`生成文档,`fix`修复旧版本的...

    用于封装大型deef公共业务组件

    良好的测试覆盖率是保证组件质量的关键。 6. **状态管理**:在大型应用中,状态管理是不可或缺的一部分。项目可能使用Redux、Vuex或类似的库来管理全局状态,确保组件之间的数据流动有序且可预测。 7. **UI组件**...

    前端自动测试之Watir

    - **测试覆盖率**:确保自动化测试覆盖所有重要的功能点是一项挑战。 - **兼容性问题**:不同的浏览器和操作系统可能会导致测试结果不一致。 ##### 4.2 解决方案 - **持续集成**:通过持续集成工具自动运行测试,...

    《设计与验证VerilogHDL》源码实例

    3. **覆盖率**:学习如何衡量和跟踪设计验证的进度,包括功能覆盖率、代码覆盖率等。 4. **仿真工具**:了解如何使用常见的Verilog仿真器,如Icarus Verilog、ModelSim等,运行和调试设计。 5. **约束随机化**:...

    开源项目-percolate-charlatan.zip

    - 提高测试覆盖率:能够更全面地测试代码的各种路径,包括异常情况。 - 快速测试:避免了启动真实服务或数据库的开销,测试运行速度更快。 - 易于维护:当接口改变时,只需更新模拟对象,而不用修改测试代码。 5...

    软件测试3级考试复习题

    而“语句覆盖”是一种代码级别的测试技术,主要用于单元测试阶段,不太适合直接应用于移动终端的应用测试。 9. **参数数量计算:** - **选项分析:** - 参数{URL}在脚本中出现了3次,迭代次数为5次,且参数设置为...

    惠普测试基础及Java考核

    选项A表示当达到所有要求的覆盖率时,这是一个较为严格的停止标准,适用于那些追求高度可靠性的项目。选项B表示执行了所有的测试用例但没有发现任何故障,这在实际操作中很少发生,因为即使执行了所有测试用例,也...

    《软件工程概论》期末测试试卷含答案.doc

    语句覆盖:只检查代码中每个语句是否被执行。 - B. 路径覆盖:完全覆盖所有可能的执行路径,是最强的覆盖标准。 - C. 条件组合覆盖:覆盖所有条件组合的可能性,较强。 - D. 判定覆盖:覆盖所有的判定结果,较弱...

Global site tag (gtag.js) - Google Analytics