c++ - 如何让 gtest 框架完全覆盖而不是部分覆盖“新”和“删除”。与 2015 年相比
问题描述
我正在使用谷歌测试框架对我的代码进行单元测试,但遇到了一个非常奇怪的问题。
我注意到任何包含动态分配(新建和删除)的行都没有得到完全覆盖,即使代码通过这些行运行。
我做了一个简单的例子来演示这个问题:假设我有以下类:
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% 的代码覆盖率?
泰!
解决方案
推荐阅读
- php - 执行八进制传递的函数
- regex - 如何使用 REGEX 在第一个点之前找到带有空格字符的多个点
- matlab - 如何将可选位置参数传递给matlab中的函数
- react-native - 如何在本机反应中从导航抽屉中调用类函数?
- c# - 将绑定值设置为 Xamarin Forms 中行为的参数
- android - 蓝牙应用程序未扫描可用设备
- c# - 在 Azure 函数中捕获异步方法异常
- asp.net-mvc - 如何使用 ASP.NET MVC 将值从一个项目传递到另一个项目?
- php - 使用 ACF 输出单个页眉样式和页脚脚本
- javascript - 固定响应式顶栏覆盖第二个固定顶栏