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

问题描述

首先,我很清楚抛出/异常引起的“hidden branch”问题。不是这个。

我观察到的是:

  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
}

这不可能是一个小众问题,我不得不相信人们成功地将 googletest 与 lcov/gcov 结合使用。人们如何绕过这个限制?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)