2

我的目的是用gcovr对我用 CMake 的 gtest 框架编写的测试执行代码覆盖率报告。

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);
}

我有 2 个测试用例。一个使用“TEST”,另一个使用“TEST_F”(又名测试夹具)。

无夹具测试:

TestCase1.cpp:

TEST (Test_Start, MethodToTest_test)
{
    ClassUnderTest       TestObj;

    EXPECT_EQ(TestObj.Start(1,2),0xFF));
}

用夹具测试:

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 );
}

在这两种情况下都会生成 ClassUnderTest.cpp.gcno 并且内部数据似乎有效,但是当我以下列方式调用 gcovr 时:

python C:\Python27\Scripts\gcovr --html --html-details -o output-file-name.html

仅在 html 报告中找到 TestCase1 的覆盖率,TestCase2 的覆盖率在 ClassUnderTest.cpp 中不可见。

可能是什么问题?

先感谢您。

4

0 回答 0