c - 使用 CTC++ 代码覆盖工具的 C 语言单元测试代码覆盖率
问题描述
我是 C 编程的新手。我正在使用 CTC++ 代码覆盖率工具进行 C 语言单元测试代码覆盖率,而我的断言条件没有被代码覆盖率覆盖。我还能做些什么来覆盖那部分?
解决方案
断言的“问题”是它们很少失败。这通常是一个健全性检查:如果某些条件为假,那么程序的其余部分将真的跳入困境并且很难调试,所以最好彻底停止它,即使它不太可能在这里失败。例子:
char *x = malloc(100);
assert(x != NULL); // how to test so x == NULL ????
因此,当您使用覆盖工具时,该工具必须检查assert
宏的两个分支,并且在高级测试中使其失败几乎是不可能的,而对于低级测试仍然非常困难。
反常的影响是,下一次,程序员不会像以前那样放那么多断言语句,只是因为它们的失败是不可测试的。
最好的方法是在使用覆盖工具进行测试时禁用断言(如何完全禁用断言),因此您不必证明它们是合理的(您甚至可以在覆盖报告中对此进行一般说明/放弃)并将它们留在该程序以防万一。
推荐阅读
- python - SQLAlchemy中抽象类Model和Mixin的区别
- c - 打印从 C 函数返回的指针字符串
- database - Mongodb查询:查找具有给定范围内所有数组元素的文档
- python - 如何从熊猫数据框中的集合中获取元素?
- node.js - 如何使用 nodejs cron 作业制作计划报告功能?(aws 自动缩放的问题)
- r - 将颜色因子添加到分组的 ggplot 而不重新分组
- java - 当android在后台杀死应用程序时,使用来自活动的对象的服务会发生什么?
- php - Xdebug 不创建日志文件
- python - [Python3]如何使用 seaborn/matplotlib 绘制 55 列
- javascript - 为什么要使用 Promise.resolve().then()?