我试图用gcov首次测量测试覆盖率.现在我已经超过了最初的学习曲线,但事情似乎进展顺利,除了一点点障碍.我希望它归结为对我缺乏了解,所以我希望熟悉gcov的人可以解释发生了什么.
问题是我有一个显示0%覆盖率的特定头文件.但是,该标题中唯一的东西是一个使用良好的类的类声明.
此外,该类的实现文件显示100%的覆盖率,我可以指向5个不同的测试,我知道该类正在成功实例化的事实.
那么为什么gcov会在课堂上报告0%的覆盖率,我该如何解决呢?
– 编辑 –
正如lacqui在下面指出的那样,如果标头没有可执行代码,则它不应包含在覆盖率计算中.实际上,在我的所有类中,特定的头文件是gcov尝试为其生成覆盖信息的唯一文件.
我已经与其他标题进行了逐行比较,我发现最大的区别是这个特定的标题没有显式的构造函数或析构函数,而其他标题.为了尽量减少文件之间的差异,我在问题类中添加了一个显式的ctor和dtor.但是,这没有任何区别.
解决方法:
看起来我已经解决了这个问题.正如我所料,它更像是一种缺乏经验的问题,而不是任何事情.
事实证明,gcov只找到了可用跟踪文件的一个子集,因此只报告了总结果的一部分.查找并添加其余的tracefiles解决了这个问题.
对于任何好奇的,有问题的头文件仍然显示在输出中.事实上,所有其他头文件也都这样做,即使它们不包含可执行代码.但是,它们都显示出90%的覆盖率.
标签:c,unit-testing,code-coverage,gcov
来源: https://codeday.me/bug/20190724/1520261.html