Przełączam z TestNg na JUnit. Muszę dopasować oczekiwany komunikat wyjątku z predefiniowanym wyrażeń regularnych takich jak w poniższym kodzie TestNG:JUnit - oczekiwany komunikat wyjątku wyrażenie regularne
@Test(expectedExceptions = SomeClass.class, expectedExceptionsMessageRegExp = "**[123]regexExample*")
public void should_throw_exception_when_...() throws IOException {
generatesException();
}
To działa dobrze, ale nie mogę osiągnąć to samo zachowanie w JUnit. Wpadłem na to rozwiązanie:
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Test
public void should_throw_exception_when_...() throws IOException {
expectedEx.expect(SomeClass.class);
expectedEx.expectMessage("**[123]regexExample*");
generatesException();
}
Ale metoda expectedEx.expectMessage("**[123]regexExample*");
nie obsługuje wyrażeń regularnych, muszę dostarczyć go z dokładnym sztywno wiadomości. Widziałem, że można to osiągnąć, podając tę metodę z Matcherem, ale nie jestem pewien, jak to zrobić właściwie.
Jakikolwiek dobry sposób robienia tego?
Innym obejście, ale można złapać oczekiwany wyjątek w teście i twierdzić, że komunikat jest poprawny, z regex. Oraz 'assert.fail()' jeśli wyjątek nie został zgłoszony. – Magnilex