【发布时间】:2018-07-22 19:55:10
【问题描述】:
我是 C 编程新手。我正在使用 CTC++ 代码覆盖率工具进行 C 语言单元测试代码覆盖率,而我的断言条件没有被代码覆盖率覆盖。我还能做些什么来覆盖这部分?
【问题讨论】:
标签: c code-coverage
我是 C 编程新手。我正在使用 CTC++ 代码覆盖率工具进行 C 语言单元测试代码覆盖率,而我的断言条件没有被代码覆盖率覆盖。我还能做些什么来覆盖这部分?
【问题讨论】:
标签: c code-coverage
断言的“问题”是它们很少失败。这通常是一个健全性检查:如果某些条件为假,那么程序的其余部分将真正跳入树林,并且很难调试,所以最好彻底停止它,即使它不太可能在这里失败。示例:
char *x = malloc(100);
assert(x != NULL); // how to test so x == NULL ????
因此,当您使用覆盖工具时,该工具必须检查assert 宏的两个分支,并且在高级测试中使其失败几乎是不可能的,而对于低级测试仍然非常困难。
反常的效果是,下一次,程序员不会像以前那样放那么多断言语句,只是因为它们的失败是不可测试的。
最好的方法是在使用覆盖率工具 (how to completely disable assertion) 进行测试时禁用断言,这样您就不必证明它们的合理性(您甚至可以在覆盖率报告中对此进行一般性注释/弃权)并留下它们以防万一。
【讨论】: