mock是什么?
Mock 是一种在软件开发中常用的测试技术,用于模拟(mocking)对象或类的行为,以便在单元测试中隔离测试目标对象并验证其行为,而无需依赖外部系统或复杂的环境。Mock 对象通常用于模拟依赖项的行为,使得测试更加可控和快速。
简单来说,mock就是设置一个对象的行为,一个对象里面有各种各样的方法,mock可以改变里面方法的行为,比如说你现在需要测试A类里面的a方法,a方法里面调用了B类的b方法,但是你现在测试的是a方法的逻辑,不需要关注b方法的具体逻辑,只需要b方法返回的对象就行,所以你就可以mock一个b方法的行为,让其不用执行具体的逻辑,而是返回一个符合规范的对象即可。下面是个简单的例子:
A类
java
@Service
public class A {
@Autowired
private B bClass;
public void a(String msg) {
System.out.println("a方法执行 --- start");
System.out.println("b方法执行 --- " + bClass.b(msg));
System.out.println("a方法执行 --- end");
}
}
B类
java
@Service
public class B {
public String b(String msg) {
System.out.println("b方法逻辑");
return msg;
}
}
mock单元测试类:
java
@RunWith(MockitoJUnitRunner.class)
public class MockABTest {
@InjectMocks
private A aClass;
@Mock
private B bClass;
@Test
public void testABMock() {
when(bClass.b(any())).thenReturn("直接跳过b方法的逻辑");
aClass.a("你好");
}
}
测试结果:

Mockito
依赖:
XML
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
注解:
语法 | 说明 |
---|---|
@Mock 注解 |
在字段上标记,自动创建 Mock 对象 |
Mockito.mock(Class) 方法 |
手动创建 Mock 对象(适用于不支持注解的场景) |
@InjectMocks 注解 |
将 Mock 对象自动注入到被测试类中 |