C++ GMock StrictMock无趣函数调用不会使测试失败

C++ GMock StrictMock无趣函数调用不会使测试失败,c++,testing,mocking,shared-ptr,googletest,C++,Testing,Mocking,Shared Ptr,Googletest,我在使用GTest时遇到了一个无法理解的行为。 问题很容易解决。我正在调用sut方法。该方法调用StrictMock对象方法。我没有对该方法调用设置任何期望。根据GTest规范,此类测试应因“无趣的模拟函数调用”而失败。事实上不是这样。 这是代码: Car.hpp #pragma一次 #包括 #包括 类引擎; 班车 { 公众: 汽车(const std::共享动力和发动机); void start(); 无效停止(); 私人: std::共享的ptr引擎; }; Car.cpp #包括“Car

我在使用GTest时遇到了一个无法理解的行为。
问题很容易解决。我正在调用sut方法。该方法调用StrictMock对象方法。我没有对该方法调用设置任何期望。根据GTest规范,此类测试应因“无趣的模拟函数调用”而失败。事实上不是这样。
这是代码:

Car.hpp

#pragma一次
#包括
#包括
类引擎;
班车
{
公众:
汽车(const std::共享动力和发动机);
void start();
无效停止();
私人:
std::共享的ptr引擎;
};
Car.cpp

#包括“Car.hpp”
#包括“Engine.hpp”
车::车(const std::共享车和引擎):引擎(引擎){}
void Car::start()
{

std::cout我认为这是因为
stricmock
(以及默认的
NiceMock
NaggyMock
)是这样的模板类:

template <class MockClass>
class StrictMock : public MockClass
[...]
模板
类StrictMock:公共MockClass
[...]
因此,在
testing::StrictMock
案例中,
StrictMock
的基类是
shared_ptr
,而不是
EngineMock
本身。根据:
中的注释,已知的限制是NiceMock、NaggyMock和StrictMock仅适用于直接在MockFoo c中使用mock方法*宏族定义的mock方法lass.


因此,在本例中,我认为MockFoo类不直接存在,因此它可能不起作用。

我认为这是因为
StrictMock
(以及
NiceMock
NaggyMock
,默认的)是这样的模板类:

template <class MockClass>
class StrictMock : public MockClass
[...]
模板
类StrictMock:公共MockClass
[...]
因此,在
testing::StrictMock
案例中,
StrictMock
的基类是
shared_ptr
,而不是
EngineMock
本身。根据:
中的注释,已知的限制是NiceMock、NaggyMock和StrictMock仅适用于直接在MockFoo c中使用mock方法*宏族定义的mock方法lass.

因此,在本例中,我认为MockFoo类并不直接包含它,因此它可能不起作用