问题描述
首先,我很清楚抛出/异常引起的“hidden branch”问题。不是这个。
我观察到的是:
- 我的测试框架 (googletest) 具有测试宏(例如
EXPECT_TRUE
)。 - 我使用宏编写通过测试
- 测量分支覆盖率现在渐近线为 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 (将#修改为@)