如果抛出JUnit ExpectedException,如何在之后继续测试?[英] How to continue test after JUnit ExpectedException if thrown?

问题描述

我已经设置了一些带有 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");
}

推荐答案

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

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

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

log.info("3");

但我不会为一些日志而烦恼.

本文地址:https://www.itbaoku.cn/post/978774.html