为什么mockito dothrow不会抛出异常

时间:2013-11-21 15:26:20

标签: mockito

我有一个void方法,让我们说“SomeClass”

public void someMethod(SomeArg arg) throws SomeException{

其中,SomeException的类型为RuntimeException

SomeException extends RuntimeException 

在我的测试用例中,我写的是:

SomeArg someArg =new SomeArg ();
someArg .setId(1234);
Mockito.doThrow(new SomeException ()). when(someClass).someMethod(someArg );

我希望例外

@Test(expected=SomeException .class) 

但令人惊讶的是,它并没有抛出异常。我错过了一些东西吗?

2 个答案:

答案 0 :(得分:0)

来自评论:

  

是的,Mockito没有正确地提供跟踪..正如评论中提到的那样,tostring和equals正在抛出异常而不是被mockito正确传播 - 所有它会说Exception - 但是缺少了跟踪。在下面的模块中修复NPTR解决了它。

答案 1 :(得分:0)

我有类似的问题。在我的实例中,我使用powermock模拟了测试中的类(因为被测试的类是一个抽象类),我没有设置在测试期间应该调用真正的方法。这样就无法调用doThrow。

如果“SomeClass”被模拟,那么你需要确保添加测试设置的行:

doCallRealMethod().when(SomeClass).someMethod(someArg);