我对c语言编程很陌生。我正在使用CTC++代码覆盖工具进行C语言单元测试代码覆盖,并且代码覆盖率没有涵盖我的断言条件。我能做些什么来涵盖这部分呢?
发布于 2018-07-22 20:05:14
断言的“问题”在于它们很少失败。这通常是一种理智的检查:如果某些条件是错误的,那么程序的其余部分将真正跳进丛林,调试将非常困难,所以最好彻底停止它,即使它不太可能在这里失败。示例:
char *x = malloc(100);
assert(x != NULL); // how to test so x == NULL ????因此,当您使用覆盖工具时,该工具必须检查assert宏的两个分支,并且在高级别测试中使其失败几乎是不可能的,对于低级别测试来说仍然非常困难。
错误的影响是,下一次,程序员不会像以前那样多地添加断言语句,仅仅是因为它们的失败是不可测试的。
最好的方法是在使用覆盖工具(how to completely disable assertion)进行测试时禁用断言,这样您就不必证明它们是合理的(您甚至可以在覆盖率报告中作一般性说明/放弃),并将它们留在程序中以防万一。
https://stackoverflow.com/questions/51468765
复制相似问题