web-dev-qa-db-ja.com

VoidメソッドのMockitoテストで例外がスローされる

私はvoid戻り値型のメソッドを持っています。また、いくつかの例外がスローされる可能性もあるため、スローされている例外をテストしたいと思います。すべての試みは同じ理由で失敗しました:

型Stubberの(T)が引数に適用できない場合の方法(void)

特定の例外をスローするためのメソッドを取得する方法を教えてください。

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));
334
edwardmlyte

かっこがひどく配置されています。あなたは使わなければなりません

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

ではなく

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

これは ドキュメントで説明されています

588
JB Nizet

新しいBDDスタイルのMockitoを使用してそれを行う方法を疑問に思ったことがある場合は、次のようにします。

willThrow(new Exception()).given(mockedObject).methodReturningVoid(...));

そして将来の参考のために、例外をスローしてから何もしない必要があるかもしれません。

willThrow(new Exception()).willNothing().given(mockedObject).methodReturningVoid(...));
6
Ondrej Burkert