C ++单元测试:存根(不是模拟)?

| 刚开始使用C ++进行单元测试。看来我需要继续编写几个存根类。我的理解是Mocks和Stub之间有区别。基本上,Mocks似乎适用于您测试对象上发生的事情(例如,验证),而Stub只是为了方便您的测试。我想模拟一下,我可以使用googlemock,但是在创建存根(ala RhinoMocks \'GenerateStub)中看不到任何东西。 有没有办法获取自动生成的存根? googlemock是否支持存根?还是我需要手动创建存根进行测试?     
已邀请:
        我认为难题中缺少的部分是,您不必为方法设置期望,而是可以设置默认返回值。 嘲弄 \“ Google Mock for Dummies \”中的所有讨论和示例都围绕着设定期望。一切都在谈论使用类似于以下内容的代码:
EXPECT_CALL(turtle, PenDown())
      .Times(AtLeast(1));
嘲笑是您想要的,但存根却没有任何期望。阅读该介绍之后,我不知道如何使用googlemock进行存根。 存根 ratkok的评论使我了解如何设置默认返回值。这是为模拟对象指定返回值但没有期望的方法:
ON_CALL(foo, Sign(_))
      .WillByDefault(Return(-1));
http://code.google.com/p/googlemock/wiki/CookBook#Setting_the_Default_Actions_for_a_Mock_Method 如果您调用的方法没有EXPECT_CALL,则googlemock会发出警告。显然,您可以通过使用其NiceMock构造来防止此警告,或者可以将其忽略。此外,您似乎可以通过使用Expect来避免警告(我不确定这对于存根而言是否是个好主意)。通过Google Mock常见问题解答:
EXPECT_CALL(foo, Bar(_))
    .WillRepeatedly(...);
我相信这正是我想要弄清楚的。 更新资料 我可以确认这项工作。我使用google test和googlemock编写了单元测试,并且能够使用ON_CALL为类添加方法。     
        Mock和Stub之间的唯一区别是Mock会强制执行行为,而Stub则不会。 据我所知,默认情况下,Google Mock \的模拟实际上是存根。只有将断言放在各种方法上时,它们才会强制执行行为。     
        看看这个:stubgen和这里的类似讨论。 这个问题可能也有用/相关。 关于Google模拟-我们在当前项目中使用它来完全自动化存根实现。实际上,整个存根代码库都是使用Google模拟实现的。     

要回复问题请先登录注册