私のTestNGユニットテストでは、テストしたい場所に例外がスローされたシナリオがありますが、メソッドが呼び出されていないことをテストしたいモックされたサブコンポーネントで私はこの思い付いたが、これはよく読み、醜い長くはない:TestNG + Mockito、投げられた例外をテストしてモックを呼び出す方法
@Test
public void testExceptionAndNoInteractionWithMethod() throws Exception {
when(subComponentMock.failingMethod()).thenThrow(RuntimeException.class);
try {
tested.someMethod(); //may call subComponentMock.methodThatShouldNotBeCalledWhenExceptionOccurs
} catch (RuntimeException e) {
verify(subComponentMock, never()).methodThatShouldNotBeCalledWhenExceptionOccurs(any());
return;
}
fail("Expected exception was not thrown");
}
両方の例外をテストし、()metodを確認するために、任意のより良い解決策はありますか?
TestNGを使用する場合、予期しない例外に対しては、 'try catch'ブロックを使用する代わりに' @ Test'アノテーションの 'expectedExceptions'属性を使用する必要があります。 – Jagger
しかし、その場合は、テストコードが決してそこに届くことはないので、verify()を使用することができません。 – Michal
[Mockitoの重複している可能性があります。投げられた例外を模擬してアサートしますか?](http://stackoverflow.com/questions/ 16323580/mockito-how-to-mock-and-assert-a-thrown-exception) – krokodilko