我有一个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)
但令人惊讶的是,它并没有抛出异常。我错过了一些东西吗?
答案 0 :(得分:0)
来自评论:
是的,Mockito没有正确地提供跟踪..正如评论中提到的那样,tostring和equals正在抛出异常而不是被mockito正确传播 - 所有它会说Exception - 但是缺少了跟踪。在下面的模块中修复NPTR解决了它。
答案 1 :(得分:0)
我有类似的问题。在我的实例中,我使用powermock模拟了测试中的类(因为被测试的类是一个抽象类),我没有设置在测试期间应该调用真正的方法。这样就无法调用doThrow。
如果“SomeClass”被模拟,那么你需要确保添加测试设置的行:
doCallRealMethod().when(SomeClass).someMethod(someArg);