我正在使用easymock编写测试,有一段源代码如下:
public void doSomething(){
try
{
// Do something
}
catch (RejectedExecutionException ex)
{
// just add some metrics here, no big action
}
}
我正在为抛出rejectedexecutionexception的案例编写测试,但最终没有抛出异常,这意味着我不能使用expectedexception。那么我应该如何测试这个异常是否在easymock中抛出一次呢?
2条答案
按热度按时间hpcdzsge1#
我不认为你有一个干净的方法来做任何模型框架这一点。不过,我可以向您建议以下解决方案。
解决方案1
修改您的代码
doSomething()
具体如下:现在为这两个实现测试
doSomethingImpl()
应该抛出异常doSomething()
不应使用相同的输入数据和状态。解决方案2
你发现代码有作用,不是吗?例如电话
log.error()
. 您可以验证特定的调用确实发生过并且只发生过一次。我不记得用easymock实现这一点的具体语法,但是用mockito非常简单:useMockito.verify()
.解决方案3您可以使用powermock检查是否调用了异常的构造函数。它不是很干净,因为从理论上讲,您可以创建异常示例,但不抛出它,但它总比什么都没有好。
也许你甚至可以结合这些解决方案。但是我相信第一个是最好的。
ukdjmx9f2#
这个
Do something
part调用一个mock抛出异常?如果是,就这么做
expect(mock.methodCalled()).andThrow(new RejectedExecutionException());
然后EasyMock.verify(mock)
考试结束时。这将确保methodCalled
只打过一次电话。