📅  最后修改于: 2023-12-03 15:12:06.221000             🧑  作者: Mango
Mockito 是一个流行的 Java 测试框架,用于创建和配置模拟对象 (Mocks)。Mock 对象用于模拟依赖项和其他外部系统,从而更容易地编写有效的单元测试。Mockito 可以与 JUnit 和其他流行的测试框架一起使用。
在 Gradle 项目中添加以下依赖项:
testImplementation 'org.mockito:mockito-core:3.11.2'
以下是一个简单的 Mockito 示例,演示如何使用 Mockito 创建 Mock 对象和配置 Mock 对象的行为:
import static org.mockito.Mockito.*;
@Test
public void testSomething() {
// 创建模拟对象
MyObject mockObj = mock(MyObject.class);
// 配置 mock 对象的行为
when(mockObj.getSomething()).thenReturn("mocked result");
// 使用模拟对象进行测试
assertEquals("mocked result", mockObj.getSomething());
}
在这个示例中,我们首先创建了一个 MyObject 类的模拟对象。然后我们使用 when
和 thenReturn
方法配置模拟对象的行为,以便在调用 getSomething
方法时返回字符串 "mocked result"。最后,我们使用模拟对象进行测试,确保模拟对象返回了预期的值。
除了可以创建和配置 Mock 对象外,Mockito 还提供了许多其他功能,以帮助编写更有效的单元测试。
Mockito 允许我们验证模拟对象的方法是否已被调用。以下是一个示例:
verify(mockObj).doSomething();
这行代码验证 doSomething
方法是否已被调用。如果没有被调用,该测试将失败。
Mockito 还允许我们验证模拟对象的方法已被调用了多少次(或完全没有被调用)。以下是一个示例:
verify(mockObj, times(2)).doSomething();
这行代码验证 doSomething
方法是否已被调用了两次。如果没有被调用两次,该测试将失败。
Mockito 还允许我们捕获方法调用时传递的参数值,并在测试中使用它们。以下是一个示例:
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(mockObj).doSomething(captor.capture());
assertEquals("expected value", captor.getValue());
这行代码首先创建了一个参数捕获器对象,然后将其传递给 verify
方法,以便验证 doSomething
方法是否已被调用,并捕获传递给该方法的字符串参数。然后,我们可以使用 getValue
方法获取已捕获的参数,并确保它与预期的值相匹配。
Mockito 是一个非常强大的 Java 测试框架,可以帮助您轻松地编写有效的单元测试。无论您是新手还是经验丰富的开发人员,都应该掌握 Mockito,并将其用于您的测试环境中。