2013-03-01 154 views
241

我有一个void返回类型的方法。它也可以抛出一些异常,所以我想测试抛出的异常。所有的尝试都失败,同样的道理:Mockito测试void方法抛出异常

方法时(T)在类型Stubber不适用的参数(无效)

任何想法如何,我可以得到方法抛出指定的异常?

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...)); 
+0

的可能的复制[如何让模拟作废与方法的Mockito(https://stackoverflow.com/questions/2276271/how-to-make-mock-to-void-methods-with-mockito) – Willian 2017-07-24 20:40:33

回答

449

括号放置不好。 您必须使用

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...); 
             ^

,而不是

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...)); 
                   ^

这在the documentation解释

+3

@edwardmlyte这个Mockito不一致性是我切换到[MoxieMocks](https://code.google .com/p/moxiemocks/wiki/MockingLibraryComparison) – Muel 2014-10-20 17:37:31

+0

@clement都可以使用:http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#5。创建一个异常不会抛出它。 – 2015-07-23 15:27:46

+1

@JB Nizet我完全同意你的观点,但是如果我编写doThrow(new Exception())而不是doThrow(Exception.class),我在启动测试时出现以下错误;预期的异常com.company.project.exception.ElementNotFoundException但得到org.mockito.exceptions.base.MockitoException: – clement 2015-07-24 08:21:32