当前位置:首页 > Java

如何测试异常 java

2026-03-22 23:32:24Java

测试 Java 异常的方法

使用 JUnit 的 assertThrows
JUnit 5 提供了 assertThrows 方法,用于验证代码是否抛出预期的异常。语法如下:

@Test
void testException() {
    assertThrows(ExpectedException.class, () -> {
        // 触发异常的代码
        methodThatShouldThrow();
    });
}

此方法会检查 methodThatShouldThrow 是否抛出 ExpectedException 类型的异常。

捕获异常并验证消息
如果需要验证异常的具体消息或属性,可以捕获异常后进行断言:

@Test
void testExceptionMessage() {
    Exception exception = assertThrows(ExpectedException.class, () -> {
        methodThatShouldThrow();
    });
    assertEquals("Expected error message", exception.getMessage());
}

使用 try-catch 手动验证
在旧版 JUnit 或需要更复杂验证时,可以手动捕获异常:

@Test
void testExceptionManually() {
    try {
        methodThatShouldThrow();
        fail("Expected exception was not thrown");
    } catch (ExpectedException e) {
        // 验证异常属性
        assertTrue(e.getMessage().contains("specific text"));
    }
}

测试自定义异常
对于自定义异常,需确保异常类正确继承 RuntimeExceptionException,并通过上述方法测试其触发逻辑和消息。

模拟异常场景
使用 Mockito 模拟依赖对象抛出异常:

@Test
void testMockedException() {
    Dependency dependency = mock(Dependency.class);
    when(dependency.someMethod()).thenThrow(new ExpectedException("mock error"));

    assertThrows(ExpectedException.class, () -> {
        serviceUnderTest.useDependency(dependency);
    });
}

集成测试中的异常
在 Spring Boot 测试中,验证控制器抛出的异常:

如何测试异常 java

@Test
void testControllerException() throws Exception {
    mockMvc.perform(get("/endpoint"))
           .andExpect(status().isBadRequest())
           .andExpect(result -> assertTrue(result.getResolvedException() instanceof ExpectedException));
}

通过以上方法,可以全面覆盖异常触发条件、类型、消息及上下文的测试需求。

标签: 异常测试
分享给朋友:

相关文章

react项目如何自动化测试

react项目如何自动化测试

自动化测试工具选择 React项目常用的自动化测试工具包括Jest、React Testing Library、Cypress等。Jest是Facebook开发的JavaScript测试框架,适合单元…

php异常实现

php异常实现

PHP 异常处理基础 PHP 异常处理通过 try、catch、throw 和 finally 关键字实现。异常用于在程序执行过程中遇到错误时改变正常流程。 try { // 可能抛出异常的…

java如何处理异常

java如何处理异常

异常处理的基本概念 Java中的异常处理通过try-catch-finally机制实现,用于捕获和处理程序运行时可能出现的错误或异常情况。异常分为检查型异常(必须处理)和非检查型异常(如运行时异常)。…

java 如何测试

java 如何测试

测试 Java 代码的方法 Java 代码测试可以通过多种方式实现,包括单元测试、集成测试和端到端测试。以下是常见的测试方法: 单元测试(Unit Testing) 单元测试用于测试单个方法或类的功…

java异常如何抛出

java异常如何抛出

抛出异常的方法 在Java中,异常抛出主要通过throw关键字实现。以下是几种常见的抛出异常的方式: 使用throw关键字抛出异常 if (condition) { throw new I…

如何抛出异常 java

如何抛出异常 java

抛出异常的方法 在Java中,抛出异常主要通过throw关键字实现。以下是几种常见的抛出异常的方式: 使用throw关键字抛出异常 直接使用throw关键字抛出异常对象,可以是Java内置异常或自…