使用 Mockito 进行单元测试的基本框架可以分为几个步骤。Mockito 是一个强大的 Java 框架,用于创建模拟对象(mock objects),可以在不依赖外部系统或组件的情况下测试代码。以下是使用 Mockito 架构进行单元测试的通用步骤:
1. 添加依赖
首先,需要在项目的构建配置文件中添加 Mockito 和 JUnit 的依赖。如果使用的是 Maven 构建工具,那么可以在相应的配置文件中添加这些依赖。
<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>4.0.0</version><scope>test</scope>
</dependency>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>
2. 创建 Mock 对象
在测试类中,可以使用 @Mock
注解来声明模拟对象,或者使用 mock()
方法手动创建它们。
@Mock
private MyDependency myDependency;
// 或者
MyDependency myDependency = mock(MyDependency.class);
3. 使用 @InjectMocks 自动注入
如果被测类有依赖,你可以使用 @InjectMocks
注解来自动创建该类的实例,并将所有带有 @Mock
注解的对象注入到这个类的依赖中。
@InjectMocks
private MyClassToTest myClassToTest;
4. 初始化 Mocks
在较旧版本的 Mockito 中,需要显式地初始化 Mocks:
@Before
public void setUp() {MockitoAnnotations.initMocks(this);
}
对于较新的 Mockito 版本和 JUnit 5,可以使用 @ExtendWith(MockitoExtension.class)
来代替:
@ExtendWith(MockitoExtension.class)
class MyClassToTestTest {// ...
}
5. 编写测试用例
编写测试用例,使用 when()
来定义模拟行为,使用 verify()
来验证方法调用。
@Test
public void shouldReturnTrueWhenMethodReturnsTrue() {// Arrangewhen(myDependency.someMethod()).thenReturn(true);// Actboolean result = myClassToTest.methodThatUsesDependency();// AssertassertTrue(result);verify(myDependency).someMethod();
}
6. 清理资源
通常情况下,不需要特别清理资源,因为每个测试方法都会在一个全新的环境中运行。但是,如果确实需要重置模拟对象,可以使用 reset(mockObject)
方法。
7. 执行测试
最后,确保 IDE 或构建工具配置正确,以执行测试用例。JUnit 测试通常会自动识别以 Test
结尾的类和以 @Test
注解的方法。