我的基于 microsoft 的开发环境如下所示: - 巨大的原生 c++ 代码库,分为 10 个项目 - 每个项目都有一个依赖的测试项目(GoogleTest 单元测试),只是引用了要测试的源。
我使用 vsinstr 和 vsperfmon(用于检测/监视可执行文件和 dll 的 Visual Studio 工具)生成了覆盖率报告,但这并不像我预期的那样令人满意,因为报告只显示了单元测试行的覆盖率,而不是被测源(我检测了 testsuite-executable Sample_Project_Test.exe)。
例如,如果我有这样的方法:
(Sample_Project/add_ints.cpp)
int add(int a, int b){
return a+b;
}
int add2(int a, int b){
if (a == b)
return a * 2;
else
return a+b;
}
单元测试是这样的:
(Sample_Project_Test/int_adds_tests.cpp)
TEST(AddTest, ReturnsCorrectSum)
{
EXPECT_EQ(4, add(2,2));
}
我得到了 100% 的线路覆盖率,因为只有 add_ints.cpp 中的 add-part 被测量,add2 似乎被完全删除,因为它没有被触及。据我不了解整个报道错误,这似乎不正确?