用mockito写一个方法抛出exception的unit test例子,最后并进行断言来验证
时间: 2024-01-25 07:04:03 浏览: 31
假设我们有以下方法,它会抛出一个自定义的 `CustomException` 异常:
```java
public void doSomething() throws CustomException {
// some code
throw new CustomException("Something went wrong");
}
```
我们可以使用 Mockito 来编写一个单元测试,以确保此方法在抛出异常时表现正确:
```java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class ExampleTest {
@Mock
private CustomException customException;
@InjectMocks
private Example example;
@Test(expected = CustomException.class)
public void testDoSomething() throws CustomException {
doThrow(customException).when(example).doSomething();
example.doSomething();
}
}
```
在这个示例中,我们使用 `@Mock` 注解来创建一个 `CustomException` 的 mock 对象。然后我们使用 `@InjectMocks` 注解来注入我们要测试的 `Example` 对象。
我们使用 `doThrow()` 方法来告诉 Mockito 在调用 `example.doSomething()` 时抛出我们的 `customException` 对象。
最后,我们使用 `@Test(expected = CustomException.class)` 注解来确保当 `example.doSomething()` 抛出 `CustomException` 异常时,测试通过。
注意,使用 `expected` 属性来捕获异常只适用于 JUnit4。如果您使用的是 JUnit5,可以使用 `assertThrows()` 方法来捕获异常并进行断言。