junit中@InjectMocks作用详解
目录
一 @InjectMocks
1.1 @InjectMocks作用
1.2 案例1
1.3 案例 2
一 @InjectMocks
1.1 @InjectMocks作用
@InjectMocks
是 Mockito 测试框架中的一个关键注解,用于自动将被测类的依赖项(模拟对象)注入到被测类实例中。它简化了测试类的初始化过程,特别适用于依赖注入的场景。
在类中zongheTest 调用UserserviceImpl类;
而UserserviceImpl依赖与UserDao这个类
@InjectMocks 这里就是将
自动将被测类【UserServiceImpl 】的依赖项(模拟对象)【userdao】注入到被测类实例中【UserServiceImpl 类】中
1.2 案例1
1.测试代码
@ExtendWith(MockitoExtension.class)
public class ZongheTest {@Mockprivate UserDao userDao;@InjectMocksprivate UserServiceImpl userServiceImpl;@Testpublic 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()
检查依赖的交互是否按预期发生
-