Use*_*ser 11 c++ unit-testing mocking stub googlemock
刚进入使用C++的单元测试.看起来我需要编写几个存根类.我的理解是Mocks和Stubs之间存在差异.基本上似乎Mocks适用于测试对象上发生的事情(例如验证),而Stubs只是方便您进行测试.我想嘲笑,我可以使用googlemock,但我没有看到任何内容用于创建Stubs(ala RhinoMocks'GenerateStub).
有没有办法获得自动生成的存根?googlemock是否支持存根?或者我是否必须手动创建存根以进行测试?
Use*_*ser 17
我认为这个难题的缺失部分是你不必在方法上设置期望,而是可以设置默认的返回值.
嘲弄
" Google Mock for Dummies " 中的所有讨论和示例都围绕着设定期望.所有内容都讨论了使用类似于以下内容的代码:
EXPECT_CALL(turtle, PenDown())
.Times(AtLeast(1));
Run Code Online (Sandbox Code Playgroud)
这就是你想要嘲笑的东西,但对于抄袭你没有任何期望.阅读完介绍后,我不知道如何使用googlemock进行存根.
存根
ratkok的评论让我找到了如何设置默认返回值.以下是如何为模拟对象指定返回值但不期望:
ON_CALL(foo, Sign(_))
.WillByDefault(Return(-1));
Run Code Online (Sandbox Code Playgroud)
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(...);
Run Code Online (Sandbox Code Playgroud)
我相信这正是我想弄清楚的.
更新
我可以确认这是有效的.我使用谷歌测试和googlemock编写了一个单元测试,并且能够使用ON_CALL为类创建一个方法.
| 归档时间: |
|
| 查看次数: |
14452 次 |
| 最近记录: |