使用gmock,我如何验证班级的驱动器被称为?有办法,除了 将其包裹在另一堂课?

明显的方法, EXPECT_CALL(object, ~classtype()) 产生编译器错误(Gmock无法产生称为的模拟方法 gmock_~classtype).

有帮助吗?

解决方案

检查destructor呼叫的一种简单方法:

class MockFoo : public Foo {
  ...
  // Add the following two lines to the mock class.
  MOCK_METHOD0(Die, void());
  virtual ~MockFoo() { Die(); }
};

在您的测试功能中:

 MockFoo* foo = new MockFoo;
  ...
  {
    EXPECT_CALL(*foo, Die());
  }

更多详情可在这找到: 嘲笑破坏者

其他提示

除非你过去 --gmock_catch_leaked_mocks=0, ,那么当您未能销毁模拟时,Gmock应该已经检测到。驱动器是将不满意的期望标记为错误的地方,因此Gmock具有特殊的支持,可以检测未调用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top