如何让“新”和“删除”完全覆盖,而不是部分覆盖gtest框架。 vs 2015

时间:2018-05-01 11:25:15

标签: c++ code-coverage googletest

我正在使用谷歌测试框架对我的代码进行单元测试,我遇到了一个非常奇怪的问题。

我注意到包含动态分配(新增和删除)的任何行都没有完全覆盖,即使代码贯穿这一行。

我举了一个简单的例子来证明这个问题: 假设我有以下课程:

class DummyClass // fully covered
{
public:
    int x;
    DummyClass() { x = 5; }; // fully covered
    ~DummyClass() { }; // fully covered
};

现在我有以下函数静态和动态地分配这个类:

static void CoverageFunctionTest()
{
    // any logic here
    DummyClass staticVar1; // fully covered
    DummyClass* dynamicVar = new DummyClass();  // partially covered
    // any logic here
    DummyClass staticVar2; // fully covered
    delete dynamicVar;  // partially covered
}

带有“new”关键字的行和带有“delete”的行  关键字被视为部分涵盖且未完全覆盖。

此功能的覆盖率为:88.24%,即使我们覆盖了其中的每一行,并且该类的覆盖率为100%。

如何为此功能获得100%的代码覆盖率?

泰!

0 个答案:

没有答案