首页 > 解决方案 > 使用 CTC++ 代码覆盖工具的 C 语言单元测试代码覆盖率

问题描述

我是 C 编程的新手。我正在使用 CTC++ 代码覆盖率工具进行 C 语言单元测试代码覆盖率,而我的断言条件没有被代码覆盖率覆盖。我还能做些什么来覆盖那部分?

标签: ccode-coverage

解决方案


断言的“问题”是它们很少失败。这通常是一个健全性检查:如果某些条件为假,那么程序的其余部分将真的跳入困境并且很难调试,所以最好彻底停止它,即使它不太可能在这里失败。例子:

char *x = malloc(100);
assert(x != NULL);   // how to test so x == NULL ????

因此,当您使用覆盖工具时,该工具必须检查assert宏的两个分支,并且在高级测试中使其失败几乎是不可能的,而对于低级测试仍然非常困难。

反常的影响是,下一次,程序员不会像以前那样放那么多断言语句,只是因为它们的失败是不可测试的。

最好的方法是在使用覆盖工具进行测试时禁用断言(如何完全禁用断言),因此您不必证明它们是合理的(您甚至可以在覆盖报告中对此进行一般说明/放弃)并将它们留在该程序以防万一。


推荐阅读