@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
时间: 2024-02-22 08:59:22 浏览: 21
是的,@Test(expected=ArithmeticException.class)也可以用来检查被测方法是否抛出ArithmeticException异常。这个注解表示预期被测方法会抛出ArithmeticException,如果被测方法没有抛出这个异常,测试将会失败。以下是一个示例:
```java
@Test(expected=ArithmeticException.class)
void testDivisionByZero() {
// 在这里调用可能抛出 ArithmeticException 的方法
}
```
在这个例子中,我们期望调用的方法会抛出ArithmeticException异常。如果这个异常没有被抛出,测试将会失败。但是需要注意的是,这种方式无法验证异常消息是否正确。如果需要验证异常消息是否正确,建议使用assertThrows()方法。
相关问题
用mockito写一个方法抛出exception的unit test例子
假设我们有一个名为`Calculator`的类,其中有一个名为`divide`的方法,该方法接受两个整数作为参数,并将它们相除。如果第二个参数为0,则该方法将抛出`ArithmeticException`。我们可以使用Mockito框架编写一个测试用例来测试此方法是否会抛出正确的异常。
```java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class CalculatorTest {
@Mock
Calculator calculator;
@Test(expected = ArithmeticException.class)
public void testDivideByZero() {
when(calculator.divide(10, 0)).thenThrow(new ArithmeticException("Division by zero"));
calculator.divide(10, 0);
}
}
```
在上面的示例中,我们使用`@Mock`注释创建了一个名为`calculator`的模拟对象。我们还使用`@RunWith(MockitoJUnitRunner.class)`注释告诉JUnit使用Mockito运行测试用例。
在`testDivideByZero`测试方法中,我们使用`when`方法来告诉模拟对象在调用`divide`方法时抛出`ArithmeticException`异常。然后我们调用`divide`方法并期望它抛出`ArithmeticException`异常。如果`divide`方法没有抛出异常,则测试将失败。
这是一个简单的例子,演示了如何使用Mockito框架编写单元测试来测试方法是否会抛出正确的异常。
expected = IllegalArgumentException.class 这是什么意思
`expected = IllegalArgumentException.class` 是 JUnit 的一个注释,它表示该测试用例期望抛出一个 IllegalArgumentException 异常。如果该测试用例没有抛出该异常,测试将失败。这种方法可以确保我们对于某些情况下预期的异常能够正确地处理,并且代码具有正确的异常处理行为。
在我们的示例代码中,我们使用了这种方法来测试输入值为 null 时是否能够正确地抛出 IllegalArgumentException 异常。如果代码没有正确地抛出该异常,我们就可以修正它,以确保代码能够正确地处理这种情况。