Mockito test a void method throws an exception
我有一个返回类型为void的方法。它还可以抛出一些异常,所以我想测试那些被抛出的异常。所有尝试都失败了,原因相同:
The method when(T) in the type Stubber is not applicable for the arguments (void)
我有什么想法可以让这个方法抛出一个指定的异常吗?
1
| doThrow (new Exception()). when(mockedObject. methodReturningVoid(... )); |
- 如何使用mockito创建模拟到无效方法的可能副本
括号的位置不正确。你必须使用
1 2
| doThrow (new Exception()). when(mockedObject ). methodReturningVoid(... );
^ |
而不是
1 2
| doThrow (new Exception()). when(mockedObject. methodReturningVoid(... ));
^ |
这在文档中有解释
- @爱德华姆莱特这种莫西托的不一致性是我转向莫西莫克的原因之一。
- @Clement两者都可以使用:docs.mockito.googlecode.com/hg/latest/org/mockito/…。创建异常不会引发异常。
- @jb nizet我完全同意您的看法,但是如果我编写dothrow(new exception())而不是dothrow(exception.class),那么在启动测试时会出现以下错误;预期的异常是com.company.project.exception.elementnotfoundexception,但得到了org.mockito.exceptions.base.mockitoexception:
- 再问一个问题,测试中的代码、测试的代码以及异常的完整堆栈跟踪。
- dothrow(new exception()).when(object).voidMethod(any());
- 对Mockito 2.0.2来说就像是一种魅力
如果您想知道如何使用Mockito的新BDD样式:
1
| willThrow (new Exception()). given(mockedObject ). methodReturningVoid(... )); |
为了将来参考,可能需要抛出异常,然后什么也不做:
1
| willThrow (new Exception()). willNothing(). given(mockedObject ). methodReturningVoid(... )); |
- 感谢您在此处发布此消息;如果该方法返回一个值:given(mockedObject.methodReturningObject()).willthrow(new exception());如果该方法不返回任何内容:willthrow(new exception()).given(mockedObject.methodReturningvoid(…);说明表单javadoc:"存根作废需要与@link mockito whe不同的方法n(object)(或bdmockito.given),因为编译器不喜欢括号内的void方法…"