我是C编程新手。我正在使用CTC ++代码覆盖率工具进行C语言单元测试代码覆盖率,而我的断言条件未被代码覆盖率覆盖。我该怎么做才能覆盖该部分?
答案 0 :(得分:0)
带有断言的“问题”是它们很少失败。这通常是一个健全性检查:如果某些条件为假,则该程序的其余部分将真正跳入树林,并且将很难调试,因此最好干净地停止它,即使它不太可能在此处失败。示例:
char *x = malloc(100);
assert(x != NULL); // how to test so x == NULL ????
因此,当您使用Coverage工具时,该工具必须检查assert
宏的两个分支,并且使它失败对于高水平测试几乎是不可能的,而对于低水平测试仍然非常困难。
有害的影响是,下一次,程序员将不会放下像以前那样多的断言语句,只是因为它们的失败是不可测试的。
最好的方法是在使用覆盖率工具(how to completely disable assertion)进行测试时禁用断言,因此您不必为其辩解(您甚至可以在覆盖率报告中对此进行一般性注释/放弃),并且以防万一。