]Junit测试 实验任务6: 学习使用@Test 的参数:expected=ArithmeticException.class
时间: 2024-09-19 17:05:06 浏览: 55
在JUnit测试框架中,`@Test`注解用于标记一个方法作为测试用例。当你想检查某个特定的异常是否会被抛出时,可以使用`expected`属性指定预期的异常类型。例如,在实验任务6中,如果目标是验证某段代码在遇到特定条件时应该抛出`ArithmeticException`,你可以这样做:
```java
import org.junit.Test;
import static org.junit.Assert.assertThrows;
public class YourTestClass {
@Test(expected = ArithmeticException.class)
public void testDivideByZero() {
int result = divide(10, 0); // 这里是你可能会引发异常的操作
// 如果divide方法未抛出ArithmeticException,这个测试将会失败
}
private int divide(int a, int b) {
return a / b; // 假设这将导致除以零错误
}
}
```
在这个例子中,`assertThrows(ArithmeticException.class, () -> divide(10, 0))`会验证`divide`方法是否真的在传入0的情况下抛出了`ArithmeticException`。如果没有抛出,那么测试就会失败,因为实际结果并不符合预期。
相关问题
学习使用以下两种方式处理异常,测试除法 1.@Test 的参数:expected=ArithmeticException.class 2.被测代码抛出异常 提交代码截图与运行结果截图。
在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的错误提示和断言失败信息来获取更详细的反馈。如果你提供截图,应该包含测试结果以及异常堆栈跟踪,以便更好地理解发生了什么。
编写Junit test case测试类,测试Calculator类中除法方法。
在Java中,使用JUnit测试框架编写测试用例,首先需要确保测试类被`@RunWith`注解标记,并且测试方法使用`@Test`注解。测试Calculator类中除法方法时,应当考虑正常情况、边界情况(比如除数为0时)以及非法输入(比如null值)。下面是一个简单的例子:
```java
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class CalculatorTest {
private Calculator calculator;
@Before
public void setUp() {
calculator = new Calculator();
}
@Test
public void testDivideByNonZero() {
assertEquals(2.0, calculator.divide(10, 5), 0.0001);
}
@Test(expected = ArithmeticException.class)
public void testDivideByZero() {
calculator.divide(10, 0);
}
// 以下为辅助类和方法
public class Calculator {
public double divide(double dividend, double divisor) {
if (divisor == 0) {
throw new ArithmeticException("除数不能为0");
}
return dividend / divisor;
}
}
}
```
阅读全文