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

C language Unit test code coverage using CTC++ code coverage tool

我是 c 编程的新手。我正在使用 CTC++ 代码覆盖工具进行 C 语言单元测试代码覆盖,而我的断言条件未被代码覆盖覆盖。我该怎么做才能涵盖这部分?

断言的"problem" 是它们很少会失败。这通常是一种健全性检查:如果某些条件为假,那么程序的其余部分就会真正跳入困境并且调试起来会非常困难,所以最好干净利落地停止它,即使它不太可能在这里失败。示例:

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

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

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

最好的方法是在使用覆盖率工具 (how to completely disable assertion) 进行测试时禁用断言,因此您不必证明它们的合理性(您甚至可以在覆盖率报告中进行一般性的 note/waiver关于那个)并将它们留在程序中以防万一。