抛出异常而不是返回默认值
我是Mockito的新手,想在单元测试中使用它。抛出异常而不是返回默认值
我不喜欢的是使用Mockito.mock(Class<T>)
为没有明确定义行为的方法返回默认值(如null
)创建的模拟。相反,我希望他们在这种情况下抛出一个异常,所以我知道我需要添加这个定义。
我试过如下:
SomeType m = mock(SomeType.class, new ThrowsException(new SomeRuntimeException(...)));
when(m.a()).thenReturn(...);
m.a(); // ok
m.b(); // throws exception
但由于异常调用when()
期间已经抛出不起作用。
有没有其他的方法来实现这一目标?
更换
when(m.a()).thenReturn(...);
与
doReturn(...).when(m).a();
+1谢谢! doReturn的javadoc解释了两条线的区别。它也恰恰指出我的情况。 :-) – Wolfgang 2011-06-16 12:36:32
我不知道Mockito的理由是不提供一种方法来为未打开的方法抛出异常。使用ThrowsException + doReturn的缺省答案确实有效,但它实际上意味着你永远不能使用'when',这是首选的方法。 – 2011-09-22 17:32:23
您的意思是类似于以下内容: Mockito.doThrow(new RuntimeException())。when(m).a(); – fivanski 2011-09-26 13:31:11
+1:有趣的使用案例!我从来没有想过这个:-) – 2011-06-16 07:39:40