我正在使用谷歌测试框架对我的代码进行单元测试,我遇到了一个非常奇怪的问题。
我注意到包含动态分配(新增和删除)的任何行都没有完全覆盖,即使代码贯穿这一行。
我举了一个简单的例子来证明这个问题: 假设我有以下课程:
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%的代码覆盖率?
泰!