我試圖驗證我所有的例外都是正確的。因爲值包含在CompletableFutures
中,所拋出的異常是ExecutionException
,原因是我通常會檢查的異常。簡單的例子:ExpectedException造成原因?
void foo() throws A {
try {
bar();
} catch B b {
throw new A(b);
}
}
所以foo()
轉換異常由bar()
扔了,所有這一切都內CompletableFutures
和AsyncHandlers
做(我不會複製整個代碼,它只是供參考)
在我單位測試中,我正在做bar()
拋出一個異常,並要檢查它的翻譯正確調用foo()
時:
Throwable b = B("bleh");
when(mock.bar()).thenThrow(b);
ExpectedException thrown = ExpectedException.none();
thrown.expect(ExecutionException.class);
thrown.expectCause(Matchers.allOf(
instanceOf(A.class),
having(on(A.class).getMessage(),
CoreMatchers.is("some message here")),
));
到目前爲止好,b UT我也想驗證例外的因由A
是例外B
和having(on(A.class).getCause(), CoreMatchers.is(b))
原因CodeGenerationException --> StackOverflowError
TL; DR:我如何獲得預期的異常引起的原因是什麼?
也許這個問題是你想要的(我不知道):https://stackoverflow.com/questions/ 871216/junit - 可能期望包裝異常/ 20759785#20759785 – 2016-11-25 18:29:36
@RC。幾乎,但我必須更深入一級,並得到下一個原因:) – Amir
你應該能夠適應:https://stackoverflow.com/a/6528640/180100 – 2016-11-26 09:24:04