使用CTC的C语言单元测试代码覆盖率++;代码覆盖工具

使用CTC的C语言单元测试代码覆盖率++;代码覆盖工具,c,code-coverage,C,Code Coverage,我是c编程新手。我正在使用CTC++代码覆盖工具进行C语言单元测试代码覆盖,我的断言条件不在代码覆盖范围之内。我能做些什么来涵盖这一部分呢?断言的“问题”是它们很少失败。这通常是一个理智的检查:如果某个条件是错误的,那么程序的其余部分将真正陷入困境,调试将非常困难,因此最好干净地停止它,即使它不太可能在这里失败。例如: char *x = malloc(100); assert(x != NULL); // how to test so x == NULL ???? 因此,当您使用覆盖率工

我是c编程新手。我正在使用CTC++代码覆盖工具进行C语言单元测试代码覆盖,我的断言条件不在代码覆盖范围之内。我能做些什么来涵盖这一部分呢?

断言的“问题”是它们很少失败。这通常是一个理智的检查:如果某个条件是错误的,那么程序的其余部分将真正陷入困境,调试将非常困难,因此最好干净地停止它,即使它不太可能在这里失败。例如:

char *x = malloc(100);
assert(x != NULL);   // how to test so x == NULL ????
因此,当您使用覆盖率工具时,该工具必须检查
assert
宏的两个分支,在高级别测试中使其失败几乎是不可能的,在低级别测试中仍然非常困难

反常的结果是,下一次,程序员不会像以前那样放那么多断言语句,只是因为它们的失败是不稳定的


最好的方法是在使用coverage tool()进行测试时禁用断言,这样您就不必证明它们是正确的(您甚至可以在coverage report中对此做一个一般性的说明/豁免),并将它们留在程序中以防万一。

禁用断言后,它就可以工作了。非常感谢。