gpt4 book ai didi

c++ - Googlemock 没有捕捉到泄露的对象

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:03 26 4
gpt4 key购买 nike

我创建了一个 googlemock 文本夹具类,在 SetUp 中我使用 new 创建了两个对象。在拆解中,如果我什么都不删除,我只会得到其中一个对象的内存泄漏错误。

class MissileLauncherListenerTest : public ::testing::Test {
protected:
MissileLauncher* launcher;
MockProjectileCreatorListener* launcher_listener;

virtual void SetUp() {
launcher = new MissileLauncher(FRIENDLY) ;
launcher_listener = new MockProjectileCreatorListener();
launcher->add_listener(launcher_listener);
}

virtual void TearDown() {
delete launcher_listener;
}
};

TEST_F(MissileLauncherListenerTest, multiple_listeners_notified) {
MockProjectileCreatorListener launcher_listener2;

EXPECT_CALL(*launcher_listener, notify_projectile_launched(_, _));
EXPECT_CALL(launcher_listener2, notify_projectile_launched(_, _));

launcher->add_listener(&launcher_listener2);
launcher->create_missile(0, 0, 0, 0);
}

在这段代码中,我没有从 googletest 收到内存泄漏错误,难道我不应该收到一个用于 MissileLauncher 的错误吗?

最佳答案

您没有收到 MissileLauncher 对象的内存泄漏错误,因为它不是模拟对象。它是您的类的一个对象,因此 gmock 不会跟踪任何泄漏。另一方面,类MockProjectileCreatorListener 是由gmock 生成的。因此,该类的所有对象都是模拟对象,gmock 机制会警告您此类对象的泄漏。

关于c++ - Googlemock 没有捕捉到泄露的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34806872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com