我创建了一个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
的错误吗?
答案 0 :(得分:3)
您没有收到MissileLauncher
对象的内存泄漏错误,因为它不是模拟对象。它是您班级的一个对象,因此gmock
不会跟踪任何泄漏。另一方面,课程MockProjectileCreatorListener
由gmock
生成。因此,此类的所有对象都是模拟对象,gmock
机制会警告您此类对象的泄漏。