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

Wol*_*ang 19 exception-handling mockito

我是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
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为在调用期间已经抛出了异常when().

有没有其他方法来实现这一目标?

Arn*_*iva 15

更换

when( m.a() ).thenReturn( ... );

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

  • 我想知道Mockito的原因是没有提供一种方法来为未被取消的方法抛出异常.使用默认的ThowsException的答案+ doReturn确实有效,但它实际上意味着你永远不能使用'when',这是首选的方法. (2认同)