C++ GMock StrictMock无趣函数调用不会使测试失败
我在使用GTest时遇到了一个无法理解的行为。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
问题很容易解决。我正在调用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类并不直接包含它,因此它可能不起作用