我打算用 gcovr 执行代码覆盖率报告到我用CMake用gtest框架编写的测试。
console.log('JUST TESTING!!!!!!!')
我有2个测试用例。一个使用" TEST" s其他用途" TEST_F" s(a.k.a测试装置)。
没有夹具的测试:
ClassUnderTest.h:
class ClassUnderTest
{
public:
uint8_t Start(int in_a, int in_b);
static uint8_t MethodToTest(int a, const uint8_t *b, uint32_t c);
}
使用Fixture进行测试:
TestCase1.cpp:
TEST (Test_Start, MethodToTest_test)
{
ClassUnderTest TestObj;
EXPECT_EQ(TestObj.Start(1,2),0xFF));
}
在这两种情况下都会生成ClassUnderTest.cpp.gcno并且数据内部似乎有效,但是当我以下列方式调用gcovr时:
TestCase2.cpp:
class ClassUnderTest_Test : public ::testing::Test, public ClassUnderTest
{
public:
virtual void SetUp();
virtual void TearDown();
bool TestCase2();
};
bool ClassUnderTest_Test :: TestCase2()
{
uint8_t retval;
retval = ClassUnderTest::MethodToTest(1,2,3);
return retval;
}
TEST_F( ClassUnderTest_Test , MethodToTest_test )
{
ASSERT_EQ( TestCase2(), true );
}
只有在html报告中找到的TestCase1的覆盖范围,TestCase2覆盖范围在ClassUnderTest.cpp中不可见。
可能是什么问题?
提前谢谢。