我第一次尝试使用gcov测量测试覆盖率。现在我已经过了最初的学习曲线,一切似乎都很顺利,除了一点点障碍。我希望这归结为我缺乏理解,所以我希望熟悉 gcov 的人可以解释发生了什么。
问题是我有一个特定的头文件显示 0% 的覆盖率。但是,该标头中唯一的内容是一个使用良好的类的类声明。
此外,该类的实现文件显示了 100% 的覆盖率,并且我可以指出 5 个不同的测试,我知道在这些测试中该类已成功实例化。
那么为什么 gcov 会报告课程的 0% 覆盖率,我该如何解决呢?
- 编辑 -
正如 lacqui 在下面指出的,如果标头没有可执行代码,则不应将其包含在覆盖率计算中。事实上,在我所有的类中,那个特定的头文件是 gcov 试图为其生成覆盖信息的唯一一个。
我已经与其他头文件进行了逐行比较,我发现最大的不同是这个特定的头文件没有显式的构造函数或析构函数,而其他头文件有。为了尽量减少文件之间的差异,我在问题类中添加了一个显式的 ctor 和 dtor。然而,这并没有什么不同。