Ho impostato alcuni test JUnit (4.12) con la funzione ExpectedException e vorrei che il test continuasse dopo l'eccezione prevista. Ma non vedo mai il log '3', poiché l'esecuzione sembra fermarsi dopo l'eccezione, l'evento se si cattura?Come continuare il test dopo JUnit ExpectedException se lanciato?
Questo è effettivamente possibile e come?
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testUserAlreadyExists() throws Exception {
log.info("1");
// Create some users
userService.createUser("toto1");
userService.createUser("toto2");
userService.createUser("toto3");
Assert.assertTrue(userService.userExists("toto1"));
Assert.assertTrue(userService.userExists("toto2"));
Assert.assertTrue(userService.userExists("toto3"));
log.info("2");
// Try to create an existing user
exception.expect(AlreadyExistsException.class);
userService.createUser("toto1");
log.info("3");
}
Si potrebbe voler riconsiderare la scrittura di un test in cui si desidera eseguire qualcosa dopo che un'eccezione è stata lanciata. Se c'è qualcos'altro che vuoi testare, dovresti dividerli in due test diversi, uno che controlla l'eccezione e il secondo che controlla l'altra logica. –
Possibile duplicato di [JUnit continua ad affermare le cose dopo l'eccezione prevista] (http://stackoverflow.com/questions/21506079/junit-continue-to-assert-things-after-expected-exception) – Joe