gcov/lcov+googletest创建一个人为的低分支覆盖率报告



首先,我很清楚"隐藏分支";由抛出/异常引起的问题。事实并非如此。

我观察到的是:

  1. 我的测试框架(googletest(有测试宏(例如EXPECT_TRUE(
  2. 我用宏编写通过测试
  3. 测量分支覆盖率现在是50%的渐近线,因为我没有评估测试在通过和失败的情况下

考虑以下内容:

TEST (MyTests, ContrivedTest)
{
EXPECT_TRUE(function_that_always_returns_true());
}

现在假设我在function_that_always_returns_true()中完全覆盖了每一行和每一个分支,这个分支覆盖率报告将在50%时渐近线(因为gcov没有观察到第3行在失败条件下进行评估,有意(

关于这个问题,我唯一的想法是,我可以用LCOV_EXCL_BR_LINE之类的东西排除评估宏,但这感觉既不符合人体工程学,又很麻烦。

TEST (MyTests, ContrivedTest)
{
bool my_value = function_that_always_returns_true();
EXPECT_TRUE(my_value); //LCOV_EXCL_BR_LINE
}

这不可能是一个小众问题,我必须相信人们成功地将谷歌测试与lcov/gcov一起使用。人们会做些什么来绕过这个限制?

在查找太久之后,我意识到我想要过滤掉的所有测试调用都是模式EXPECT_*。所以简单地添加:

lcov_excl_br_line=LCOV_EXCL_BR_LINE|EXPECT_*

到我的lcovrc解决了我的问题

相关内容

  • 没有找到相关文章

最新更新