googletest移动构造函数覆盖率

时间:2017-03-17 15:58:15

标签: c++ googletest gcovr

我正在使用googletestgcovr一起产生一些奇怪的行为。我有一个头文件foo.hgcovr声称有一些行未在测试中涵盖。这些行是类定义和移动构造函数:

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

2 个答案:

答案 0 :(得分:0)

似乎是将这些行从覆盖率报告中移除的唯一方法,因为"未覆盖"是从标题中删除它们。这并不会影响任何事情,因为它们只是将copy / move / dtor设置为default。实际实施或删除这些内容的其他任何地方都没有显示在覆盖率报告中。

答案 1 :(得分:0)

您可以使用特殊注释从coverage计算中排除某些行。此行为未记录,但稳定。你可以:

  • 排除包含GCOVR_EXCL_LINE
  • 的行
  • 排除GCOVR_EXCL_STARTGCOVR_EXCL_STOP之间的行区域。

标记可以从GCOVRLCOV开始,以防您使用该工具。目前不支持Lcov的分支排除标记。