我已經設置了ExpectedException功能的一些JUnit(4.12)測試,我希望測試在預期的異常之後繼續。但是我從來沒有看到日誌'3',因爲執行似乎在異常之後停止,事件如果被捕獲?如何在拋出JUnit ExpectedException後繼續測試?
這實際上是可能的,以及如何?
@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");
}
您可能想重新考慮編寫這樣一個測試,您希望在拋出異常後執行某些操作。如果還有其他想測試的東西,則應該將它們分成兩個不同的測試,一個用於檢查異常,另一個用於檢查其他邏輯。 –
[JUnit繼續在預期的異常後繼續聲明事物]的可能重複(http://stackoverflow.com/questions/21506079/junit-continue-to-assert-things-after-expected-exception) – Joe