Exception handling 抛出异常而不是返回默认值

Exception handling 抛出异常而不是返回默认值,exception-handling,mockito,Exception Handling,Mockito,我是Mockito的新手,希望在单元测试中使用它 我不喜欢的是使用Mockito.mock(Class)创建的mock为没有明确定义行为的方法返回默认值(比如null)。相反,我希望他们在这种情况下抛出一个异常,这样我就知道我需要添加这个定义 我尝试了以下方法: SomeType m = mock( SomeType.class, new ThrowsException( new SomeRuntimeException( ... ) ) ); when( m.a() ).thenReturn(

我是Mockito的新手,希望在单元测试中使用它

我不喜欢的是使用
Mockito.mock(Class)
创建的mock为没有明确定义行为的方法返回默认值(比如
null
)。相反,我希望他们在这种情况下抛出一个异常,这样我就知道我需要添加这个定义

我尝试了以下方法:

SomeType m = mock( SomeType.class, new ThrowsException( new SomeRuntimeException( ... ) ) );
when( m.a() ).thenReturn( ... );

m.a();  // ok
m.b();  // throws exception
但是这不起作用,因为在调用
when()
时已经抛出了异常

是否有其他方法可以实现此目的?

替换


当(m.a())。然后返回(…);


doReturn(…).when(m.a();

+1:有趣的用例!我从来没想过这个:-)谢谢!doReturn的javadoc解释了这两行之间的区别。这也正是我的情况。:-)我想知道Mockito没有提供一种方法来为未创建的方法抛出异常的原因是什么。使用ThrowsException+doReturn的默认答案确实有效,但它实际上意味着您永远不能使用“when”,这是首选方法。您的意思是:Mockito.doThrow(new RuntimeException()).when(m.a();如果你解释一下,这个答案会有用得多。