目录
一 @InjectMocks
1.1 @InjectMocks作用
@InjectMocks
是 Mockito 测试框架中的一个关键注解,用于自动将被测类的依赖项(模拟对象)注入到被测类实例中。它简化了测试类的初始化过程,特别适用于依赖注入的场景。
在类中zongheTest 调用UserserviceImpl类;
而UserserviceImpl依赖与UserDao这个类
@InjectMocks 这里就是将
自动将被测类【UserServiceImpl 】的依赖项(模拟对象)【userdao】注入到被测类实例中【UserServiceImpl 类】中
1.2 案例1
1.测试代码
@ExtendWith(MockitoExtension.class)
public class ZongheTest {
@Mock
private UserDao userDao;
@InjectMocks
private UserServiceImpl userServiceImpl;
@Test
public void test() {
UserDomain userDomain = new UserDomain();
userDomain.setUserName("ljf");
userDomain.setTel("18");
Mockito.doReturn(888).when(userDao).addUser(userDomain);
int k = userServiceImpl.addUser(userDomain);
System.out.println("k:"+k);
}
}
2.service代码
3结果
1.3 案例 2
代码:
解析
@Mock
创建PaymentService
和InventoryService
的模拟对象,用于替代真实依赖。@InjectMocks
自动完成以下操作:实例化
OrderService
将
paymentService
和inventoryService
注入到OrderService
的对应字段中等效于手动初始化:
new OrderService(paymentService, inventoryService)
测试逻辑
通过
when(...).thenReturn(...)
定义模拟行为调用被测方法
placeOrder()
用
verify()
检查依赖的交互是否按预期发生