我正在使用googletest
和gcovr
一起产生一些奇怪的行为。我有一个头文件foo.h
,gcovr
声称有一些行未在测试中涵盖。这些行是类定义和移动构造函数:
File Lines Exec Cover Missing
foo.h 42 40 95% 39,47
第39行是:
class foo
和第47行是:
foo(foo&&) = default;
我尝试在std::move()
的测试体中显式调用此函数,但无济于事。有这个问题的解决方案,还是我坚持99%的覆盖率报告?
我应该注意,除了类定义和复制/移动语义(都定义为default
)之外,此标头中没有实现;所有函数体都在foo.cpp
。
答案 0 :(得分:0)
似乎是将这些行从覆盖率报告中移除的唯一方法,因为"未覆盖"是从标题中删除它们。这并不会影响任何事情,因为它们只是将copy / move / dtor设置为default
。实际实施或删除这些内容的其他任何地方都没有显示在覆盖率报告中。
答案 1 :(得分:0)
您可以使用特殊注释从coverage计算中排除某些行。此行为未记录,但稳定。你可以:
GCOVR_EXCL_LINE
GCOVR_EXCL_START
和GCOVR_EXCL_STOP
之间的行区域。标记可以从GCOVR
或LCOV
开始,以防您使用该工具。目前不支持Lcov的分支排除标记。