我的基于微软的开发环境如下所示:
- 巨大的原生 C++ 代码库,分为 10 个项目
- 每个项目都有一个依赖的测试项目(GoogleTest 单元测试),只需引用要测试的源。
我使用 vsinstr 和 vsperfmon(用于检测/监视可执行文件和 dll 的 Visual Studio 工具)生成了覆盖率报告,但这并不像我预期的那样令人满意,因为该报告仅显示单元测试行的覆盖率,而不显示单元测试行的覆盖率。正在测试的源(我检测了测试套件可执行文件 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 似乎被完全删除,因为它没有被触及。据我不明白整个覆盖范围的错误,这似乎不正确?
您需要使用链接器选项 /OPT:NOREF 构建测试,以便它链接所有代码,而不仅仅是使用的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)