在Java测试中处理异常,通常使用JUnit框架进行单元测试
- 使用
try-catch
语句捕获异常:
@Test public void testMethod() { try { // 调用可能抛出异常的方法 } catch (Exception e) { // 对异常进行处理,例如:验证异常类型、消息等 } }
- 使用
assertThrows
方法验证预期异常:
import static org.junit.jupiter.api.Assertions.assertThrows; @Test public void testMethod() { // 验证方法是否抛出预期的异常类型 assertThrows(ExpectedExceptionType.class, () -> { // 调用可能抛出异常的方法 }); }
- 使用
@Test
注解的expected
属性来验证预期异常:
import org.junit.Test; public class MyTest { @Test(expected = ExpectedExceptionType.class) public void testMethod() { // 调用可能抛出异常的方法 } }
- 使用
ExpectedException
规则(JUnit 4):
import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; public class MyTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testMethod() { // 验证方法是否抛出预期的异常类型和消息 thrown.expect(ExpectedExceptionType.class); thrown.expectMessage("Expected exception message"); // 调用可能抛出异常的方法 } }
- 在JUnit 5中,可以使用
assertThrows
与Lambda表达式结合:
import static org.junit.jupiter.api.Assertions.assertThrows; @Test public void testMethod() { // 验证方法是否抛出预期的异常类型和消息 ExpectedExceptionType exception = assertThrows(ExpectedExceptionType.class, () -> { // 调用可能抛出异常的方法 }); // 可以进一步验证异常的属性,例如消息 assertEquals("Expected exception message", exception.getMessage()); }
根据你的需求和测试场景,可以选择最适合的方法来处理Java测试中的异常。