当前位置:首页 > Java

java异常如何验证

2026-03-18 08:40:12Java

验证 Java 异常的方法

使用 JUnit 的 assertThrows

JUnit 5 提供了 assertThrows 方法,可以明确验证代码是否抛出预期的异常。语法如下:

@Test
void testException() {
    assertThrows(ExpectedException.class, () -> {
        // 可能抛出异常的代码
    });
}

使用 try-catch 手动捕获

通过手动捕获异常并验证其类型和消息,可以更灵活地处理异常情况:

java异常如何验证

@Test
void testExceptionManually() {
    try {
        // 可能抛出异常的代码
        fail("Expected exception not thrown");
    } catch (ExpectedException e) {
        assertEquals("Expected error message", e.getMessage());
    }
}

使用 Mockito 验证异常

在测试依赖注入或模拟对象时,Mockito 可以用于验证异常行为:

@Test
void testMockitoException() {
    SomeService mockService = mock(SomeService.class);
    when(mockService.someMethod()).thenThrow(new ExpectedException("Error"));

    assertThrows(ExpectedException.class, () -> mockService.someMethod());
}

验证异常链

对于嵌套异常或异常链的情况,可以通过检查 getCause 方法验证根本原因:

java异常如何验证

@Test
void testExceptionCause() {
    Exception exception = assertThrows(RuntimeException.class, () -> {
        // 抛出异常的代码
    });
    assertTrue(exception.getCause() instanceof ExpectedCauseException);
}

使用自定义断言

对于复杂的异常验证逻辑,可以封装自定义断言方法:

public static void assertException(Class<? extends Throwable> expectedType, 
                                  Executable executable, 
                                  String expectedMessage) {
    Throwable thrown = assertThrows(expectedType, executable);
    assertEquals(expectedMessage, thrown.getMessage());
}

验证异常属性

除了类型和消息外,还可以验证异常的其他属性,如错误代码或自定义字段:

@Test
void testExceptionProperties() {
    CustomException exception = assertThrows(CustomException.class, () -> {
        // 抛出异常的代码
    });
    assertEquals(123, exception.getErrorCode());
}

标签: 异常java
分享给朋友:

相关文章

java如何编程

java如何编程

Java编程基础 Java是一种面向对象的编程语言,广泛应用于企业级开发、移动应用(Android)等领域。以下是Java编程的核心步骤和示例。 环境搭建 安装JDK 从Oracle官网下载适合…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

java如何自定义异常

java如何自定义异常

自定义异常的基本概念 在Java中,自定义异常是通过继承现有的异常类来实现的。通常选择继承Exception(受检异常)或RuntimeException(非受检异常)。自定义异常允许开发者根据业务需…

uniapp插槽异常

uniapp插槽异常

uniapp插槽异常常见原因及解决方法 插槽在uniapp开发中常用于组件间内容分发,异常可能由以下原因导致: 作用域插槽未正确声明 插槽作用域变量需在父组件和子组件间明确传递。子组件需定义v-sl…

java如何创建测试类

java如何创建测试类

创建测试类的基本步骤 在Java中创建测试类通常使用JUnit框架,以下是具体方法: 安装JUnit依赖 对于Maven项目,在pom.xml中添加依赖: <dependency>…