【问题标题】:Throw exception instead of returning default value抛出异常而不是返回默认值
【发布时间】:2011-06-16 07:32:52
【问题描述】:

我是 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() 期间已经抛出异常。

还有其他方法可以实现吗?

【问题讨论】:

  • +1:有趣的用例!我从没想过这个:-)

标签: exception-handling mockito


【解决方案1】:

替换

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

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

【讨论】:

  • +1 谢谢! doReturn 的 javadoc 解释了这两行之间的区别。它也正是指我的情况。 :-)
  • 我想知道 Mockito 的原因是什么,它没有提供一种方法来为未存根的方法抛出异常。使用 ThrowsException + doReturn 的默认答案确实有效,但它实际上意味着您永远不能使用“when”,这是首选方法。
  • 你的意思是不是像下面这样:Mockito.doThrow(new RuntimeException()).when(m).a();
  • 如果你解释一下这个答案会更有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多