0
コードGMock漏洩メモリ
class A {
public:
void doit() {...}
}
class B {
public:
explicit B(unique_ptr<A> a): a_(move(a)) {}
void run() {
a_->doit();
}
private:
unique_ptr<A> a_;
}
テストコード
class MockA : public A {
public:
MOCK_METHOD0(doit, void(void));
}
TEST(BTest, Test) {
auto mockA = std::make_unique<A>();
EXPECT_CALL(*mockA, doit(_)).Times(1);
B b(std::move(mockA));
b.run();
}
このコードを実行することが
ERROR漏れる場合
:このモックオブジェクトを(試験BTest.Testで使用されます)削除されるべきではありません。そのアドレスは@ 0x1234です。
破壊中に予想が実行されるはずなので、なぜその原因になるのかわかりません。
ここで説明したようにshared_ptrエイリアスメソッドを試しましたが、Dependency injection with unique_ptr to mockでも例外があります。
@jack_carver同じこと: 'doIt()'は仮想ではありません –