按照标题,只是想知道是否有一个easymock机制来测试一个方法在其生命周期中是否被调用。EasyMock:在模拟中测试该方法不叫
18
A
回答
11
默认情况下,Easymock会为任何您未明确设置期望的方法引发异常。
14
从EasyMock的documentation:
尼斯嘲笑
论模拟返回的Mock对象()的所有方法的默认行为是抛出一个AssertionError所有意想不到的方法调用。如果您希望默认允许所有方法调用并返回适当的空值(0,null或false)的“好”Mock对象,请改用niceMock()。
所以你问的是默认行为。
14
我知道这个问题很老,但我有同样的问题作为OP,并做了更多的四处看看。我发现以下解决方案:
在EasyMock声明结束时添加3210,当调用模拟方法时,测试将失败。
之所以这比单纯地不使用NiceMock更好,并且由于unmocked方法调用而导致测试失败,是因为这允许您专门测试在给定场景中未调用XYZ方法。
我想给大卫华莱士信贷这个答案。我发现这个解决方案在他的回答如下:Test that void method didn't get called with EasyMock
+2
我相信这应该是公认的答案。原因是单元测试通常会随着新的需求而改变,并且很容易错过为什么没有设定模拟期望。该解决方案使缺少的方法调用显式化,因此需要更改代码的人员的更多关注。 – mindreader 2016-06-30 19:36:55
相关问题
- 1. 如何使用EasyMock测试模拟方法
- 2. 模拟测试方法
- 3. 使用EasyMock模拟链接方法
- 4. junit测试中的模拟方法
- 5. EasyMock和测试受保护的方法
- 6. 如何使用EasyMock测试void方法
- 7. 使用EasyMock测试异常的方法
- 8. EasyMock:如何测试这种方法
- 9. Easymock - 嵌套void方法测试(间谍)
- 10. 使用EasyMock测试void方法
- 11. 如何使用powermock-easymock来模拟正在测试的方法中的另一个类方法调用?
- 12. easymock,模拟返回模拟
- 13. EasyMock - 你必须在测试后重置()模拟吗?
- 14. PSTN呼叫模拟测试平台
- 15. 单元测试不叫viewDidAppear方法
- 16. Easymock:问题模拟void DAO方法 - 意外的方法调用
- 17. Easymock:正在执行模拟
- 18. 我该如何模拟在'测试中的方法'中创建的对象?
- 19. 单元测试的模拟DLL方法
- 20. 模拟Grails单元测试的方法
- 21. 模拟单元测试的AOP方法
- 22. 我该如何模拟easymock中的一个方法,该方法将返回其参数之一?
- 23. 的EasyMock类扩展模拟不嘲讽方法
- 24. 如何在java中的junit easymock中编写void方法的测试方法?
- 25. 单元测试 - 方法中的模拟方法?
- 26. Easymock测试方法内部的多个方法调用
- 27. RSpec - 调用应该模拟的私有方法的测试方法
- 28. 测试,记录注释的模拟框架支持(首选easymock解决方案)
- 29. 模拟在测试中
- 30. 如何用easymock模拟类中的静态方法?
我发现默认行为很烦人,因为您很容易在测试中“最终”要求测试代码效率低下。我曾经做过一个简单的重构,将一个getSomething()调用移到一个循环外部,这导致测试失败,因为我没有调用getSomething 40次(!),而“非常好”的mock鼓励这种类型的测试(因为它如果我预期在重构之前只有一次调用,将会失败)。 – 2011-06-08 09:32:45
@Stein:同意。单元测试应该是细粒度的,理想情况下只测试一件事情。 “不好”的嘲笑阻止了这一点。 – 2011-06-08 10:04:45
从我读到的问题中,OP想要一个模拟,如果它被调用,将会失败验证。好的嘲笑不是OP想要的,因为当测试期间调用好的模拟器时,它仍然通过验证。 – 2017-01-20 18:36:03