当前位置: 首页 > 图灵资讯 > 技术篇> 如何为 Java 中的异常编写单元测试?

如何为 Java 中的异常编写单元测试?

来源:图灵教育
时间:2024-08-18 23:38:49

为 java 测试中的异常编写单元:使用 @test(expected = exception.class) 注解:告诉 junit 预计会出现特定的异常。使用 try-catch 块:捕获异常并使用 asserttrue() 进行具体检查。使用 mockito 验证抛出异常:使用 verify() 方法保证抛出预期异常。

如何为 Java 中的异常编写单元测试?

如何为 Java 异常编写单元测试

实战案例:

假设我们有一个名字 UserService 其中一种方法是 createUser()。这种方法可能会抛出一个 UserAlreadyExistsException,如果另一个用户已经被赋予了相同的用户名。

立即学习"Java免费学习笔记(深入);

使用 @Test(expected = Exception.class) 进行测试:

最简单的方法就是使用 @Test(expected = Exception.class) 注释。这将被告知 JUnit 运行测试期望抛出给定的异常。

@Test(expected = UserAlreadyExistsException.class)
public void testCreateUser_whenUserExists() {
    // Setup the test...
    userService.createUser("existingUser");
}

使用 try-catch 测试块:

另一种方法是使用 try-catch 块。这样你就可以在出现异常时使用它。 assertTrue() 进行更具体的检查。

@Test
public void testCreateUser_whenUserExists() {
    // Setup the test...

    try {
        userService.createUser("existingUser");
        fail("Expected UserAlreadyExistsException");
    } catch (UserAlreadyExistsException e) {
        assertTrue("The exception message should contain the user name", e.getMessage().contains("existingUser"));
    }
}

Mockito 验证抛出异常:

假如你用的是 Mockito,你可以使用 verify() 验证是否抛出预期异常的方法。

@Test
public void testCreateUser_whenUserExists() {
    // Mock the UserService...

    doThrow(new UserAlreadyExistsException("existingUser"))
            .when(userService)
            .createUser("existingUser");

    // Run the test...

    verify(userService).createUser("existingUser");
}

注意:

  • 使用 @Test(expected = Exception.class) 如果你在测试方法中抛出任何其它异常,那么测试就会失败。
  • 使用 try-catch 当预期抛出异常时,确保使用块 fail() 阻止测试继续执行。
  • 你可以使用复杂的异常 JUnit 的 assertThat() 方法进行更具体的检查。

以上就是怎么做的 Java 异常编写单元测试?详情请关注图灵教育的其他相关文章!