我创建了一个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接收一个错误吗?
发布于 2016-01-15 08:35:20
您没有收到MissileLauncher对象的内存泄漏错误,因为它不是模拟对象。它是类的一个对象,因此gmock不会跟踪任何泄漏。另一方面,类MockProjectileCreatorListener是由gmock生成的。因此,该类的所有对象都是模拟对象,gmock机制将警告您此类对象的泄漏。
https://stackoverflow.com/questions/34806872
复制相似问题