如果抛出JUnit ExpectedException后如何继续测试?

Dea*_*iny 16 java junit4 expected-exception junit-rule

我已经使用ExpectedException功能设置了一些JUnit(4.12)测试,我希望测试在预期的异常之后继续.但是我从来没有看到日志'3',因为执行似乎在异常后停止,如果捕获事件?

这实际上是可能的,怎么样?

@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");
}
Run Code Online (Sandbox Code Playgroud)

小智 13

你不能这样做,当抛出异常时,它是真实的,ExpectedException规则与否.

如果你真的想要这种行为,你可以回到"旧学校"模式:

try {
    userService.createUser("toto1");
    Assert.fail("expecting some AlreadyExistsException here")
} catch (AlreadyExistsException e) {
    // ignore
}

log.info("3");
Run Code Online (Sandbox Code Playgroud)

但我不打扰一些日志.