Использование соответствий junit @Rule и hamcrest для подтверждения сообщения об исключении причины - PullRequest
0 голосов
/ 02 мая 2019

Для проверки исключений я могу использовать следующее:

@org.junit.Rule
public ExpectedException expectedException = ExpectedException.none();

// and in my test:
expectedException.expect(MyException.class
expectedException.expectMessage("some message");

Но я хочу проверить причину исключения, и я застрял, пытаясь понять, как это сделать. Прямо сейчас у меня есть следующее:

expectedException.expectCause(
     org.junit.internal.matchers.ThrowableCauseMatcher.hasCause(
        org.mockito.ArgumentMatchers.argThat((e) -> {
           assertEquals(
           "Unexpected message",
           "the message of the cause",
           ((SomeOtherException)e).getCause().getMessage());

           return true;
        })));

но это дает мне:

java.lang.NullPointerException в org.junit.internal.matchers.ThrowableCauseMatcher.matchesSafely (ThrowableCauseMatcher.java:30) в org.junit.internal.matchers.ThrowableCauseMatcher.matchesSafely (ThrowableCauseMatcher.java:14) в org.hamcrest.TypeSafeMatcher.matches (TypeSafeMatcher.java:65)

Кто-нибудь знает правильный подход?

...