学习使用以下两种方式处理异常,测试除法 1.@Test 的参数:expected=ArithmeticException.class 2.被测代码抛出异常 提交代码截图与运行结果截图。
时间: 2024-09-28 09:10:12 浏览: 37
在Java中,`@Test`注解通常用于JUnit测试框架中,当测试预期某个方法会抛出特定类型的异常时,你可以使用`expected`属性指定这个异常类型。这里有两个例子:
1. 使用`expected`参数指定异常类型:
```java
import org.junit.Test;
import static org.junit.Assert.assertThrows;
public class ExceptionHandlingTest {
@Test(expected = ArithmeticException.class)
public void testDivideByZero() {
int numerator = 10;
int denominator = 0;
try {
// 这里故意引发除以零的异常
int result = numerator / denominator;
} catch (ArithmeticException e) {
// 异常会被捕获并验证类型,不会继续执行后面的代码
throw e; // 如果异常类型匹配,测试通过,否则失败
}
}
// 可能的运行结果:如果代码抛出了ArithmeticException,测试会成功;否则失败
}
```
在这个例子中,`testDivideByZero`方法会期望发生`ArithmeticException`,因为除以零是不允许的。
2. 被测代码实际抛出异常:
```java
@Test
public void testCustomException() {
CustomException myException = new CustomException("This is a custom exception");
try {
throw myException;
} catch (CustomException e) {
assertSame(myException, e); // 验证捕获到的是我们期待的自定义异常
// 可能的运行结果:如果自定义异常被捕获,说明代码按预期抛出了异常
}
}
// 自定义异常示例
class CustomException extends RuntimeException {
// 构造函数等...
}
```
在第二个例子中,你需要有自定义的`CustomException`类,并确保你的被测代码能正确地抛出这个异常。
记住,每次运行测试时,你应该检查日志输出和测试报告,确认预期的异常是否被正确地抛出。同时,也可以配合IDE的错误提示和断言失败信息来获取更详细的反馈。如果你提供截图,应该包含测试结果以及异常堆栈跟踪,以便更好地理解发生了什么。
阅读全文