这可能吗? 我试过EasyMock.expectLastCall().times(0);
,但EasyMock抱怨时间必须> = 1测试void方法没有被EasyMock调用
回答
对我来说看起来像一个bug。内部类Range
不允许设置最大值小于1.
难道你不能嘲笑该方法,只需拨打Assert.fail()
?
是的,我最终这样做,看到我的回答 – nkr1pt 2010-09-15 20:54:50
如果你希望你的方法不被称为那么就没有记录它。但我同意它不会用一个很好的模拟。
与EasyMock的3.0,你需要在expectLastCall或测试添加.anyTimes()将失败:
Expectation failure on verify: myMethod(): expected: 1, actual: 0`
基于nkr1pt例如:
expectLastCall().andAnswer(new IAnswer() {
public Object answer() {
Assert.assertFail();
return null;
}
}).anyTimes();
一个事实,有些方法不叫的是由Mock
或StrictMock
控制。当没有记录的方法被调用时,它们会抛出异常。只有在使用NiceMock
s时才会出现此问题,其中调用未记录的方法时会返回默认值。
所以一个解决方案可以是不使用NiceMock
s。
我强烈不同意这个结论。也许,在这种情况下,好的模拟不是最好的选择。但是如果你想确保一个方法不会被调用,实际上这是你想测试的唯一的东西,最好用一个模拟的方法来强调这个方法,它会失败并带有适当的消息。 – qben 2015-02-12 10:24:32
这是一个很好的论点。我想指出这一点,因为我偶然发现为什么我不能指定'times(0)'。直到后来我意识到,那种与嘲讽的想法相矛盾,而不是好的嘲弄不允许未记录的方法被执行。抛出一个断言异常,因为答案看起来更像是一种解决方法,应该使用不错的模拟来指定0方法调用。 也许我在结论中有点自信。我会纠正它。 – Vic 2015-02-12 11:54:06
您可以使用3210 - 这与Assert.fail()
引发的例外情况相同,但比制作Answer
的冗余性要少。
也许增加一个很好的描述为什么测试失败进一步改善了这种解决方案(这是所有这里给出的最好的IMO)。 – qben 2015-02-12 10:27:24
- 1. 如何使用EasyMock测试void方法
- 2. 使用EasyMock测试void方法
- 3. Easymock - 嵌套void方法测试(间谍)
- 4. 使用easymock,重复void方法调用
- 5. 在void方法内测试静态方法一次被调用
- 6. 使用EasyMock测试void方法依赖关系
- 7. Easymock:问题模拟void DAO方法 - 意外的方法调用
- 8. Easymock测试方法内部的多个方法调用
- 9. 用EasyMock和Mockito嘲笑void方法
- 10. 使用EasyMock测试异常的方法
- 11. 如何在java中的junit easymock中编写void方法的测试方法?
- 12. Moq测试void方法
- 13. JUNIT测试void方法
- 14. 如何测试void方法?
- 15. 如何忽略在EasyMock中调用void方法
- 16. 验证一个void方法调用了EasyMock/PowerMock
- 17. 返回参数的EasyMock方法void
- 18. EasyMock和测试受保护的方法
- 19. EasyMock:如何测试这种方法
- 20. - (void)didBeginContact没有被调用。思考?
- 21. EasyMock的 - HibernateCallback.doInHibernate()方法调用
- 22. EasyMock的期望私有方法调用
- 23. rspec测试如果方法被调用
- 24. 如何用Moq测试void方法?
- 25. Junit使用void方法测试
- 26. 如何用JMock测试void方法
- 27. 如何使用xUnit测试void方法?
- 28. C++测试使用gtest的void方法
- 29. 如何测试在被测试的类中调用的方法?
- 30. 如何使用Junit测试工具测试void方法?
请参阅http://stackoverflow.com/questions/859031/easymock-void-methods,不知道这是一个愚蠢的。 – philant 2010-09-14 18:45:34
这不是重复的。 – hiergiltdiestfu 2013-07-22 10:30:02