Sto passando da TestNg a JUnit. Ho bisogno di abbinare messaggio di eccezione previsto con espressioni regolari predefinite quali nel codice seguente TestNG:JUnit - espressione regolare prevista messaggio di eccezione
@Test(expectedExceptions = SomeClass.class, expectedExceptionsMessageRegExp = "**[123]regexExample*")
public void should_throw_exception_when_...() throws IOException {
generatesException();
}
Questo funziona bene, ma non riesco a ottenere lo stesso comportamento in JUnit. Sono venuto con questa soluzione:
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Test
public void should_throw_exception_when_...() throws IOException {
expectedEx.expect(SomeClass.class);
expectedEx.expectMessage("**[123]regexExample*");
generatesException();
}
Ma metodo expectedEx.expectMessage("**[123]regexExample*");
non supporta le espressioni regolari, ho bisogno di fornire con il messaggio esatto hardcoded. Ho visto che questo potrebbe essere ottenuto fornendo quel metodo con Matcher ma non sono sicuro di come farlo correttamente.
Qualsiasi buon modo per farlo?
Un'altra soluzione, ma si potrebbe intercettare l'eccezione prevista nel test e affermare che il messaggio è corretto, con una regex. E 'assert.fail()' se l'eccezione non è stata lanciata. – Magnilex