junit中@InjectMocks作用详解

目录

[一 @InjectMocks](#一 @InjectMocks)

[1.1 @InjectMocks作用](#1.1 @InjectMocks作用)

[1.2 案例1](#1.2 案例1)

[1.3 案例 2](#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 {
    @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

代码:

解析

  1. @Mock

    创建 PaymentService 和 InventoryService 的模拟对象,用于替代真实依赖。

  2. @InjectMocks

    自动完成以下操作:

    • 实例化 OrderService

    • 将 paymentService 和 inventoryService 注入到 OrderService 的对应字段中

    • 等效于手动初始化:
      new OrderService(paymentService, inventoryService)

  3. 测试逻辑

    • 通过 when(...).thenReturn(...) 定义模拟行为

    • 调用被测方法 placeOrder()

    • 用 verify() 检查依赖的交互是否按预期发生

相关推荐
努力努力再努力wz9 小时前
【Lua进阶系列】Lua 调试机制详解:从虚拟机调用栈、错误传播到 debug 库
junit·单元测试·lua
BuHuaX4 天前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
海棠Flower未眠4 天前
下单请求处理流程:商品维度分布式锁与 Redis 预扣库存
redis·分布式·junit
努力努力再努力wz4 天前
【Lua 入门系列】模块与包(一):从多文件组织到require 运行时加载机制、模块缓存、预加载搜索与 Lua 文件搜索机制
开发语言·junit·lua
CarIise6 天前
Spring 框架:多配置文件、开发方式与 IOC 注解
junit·maven·jar
努力努力再努力wz6 天前
【Lua入门系列】从 Table 到元表与元方法:一文理解 Lua 的行为扩展机制
开发语言·junit·lua
麻瓜code7 天前
秒杀优化三连:Lua + 阻塞队列 + Redis Stream,响应从 3.4 秒到毫秒级
redis·junit·lua
努力努力再努力wz9 天前
【Lua 入门系列】从顺序执行到分支与循环:一文理解 Lua 控制结构、作用域与跳转规则
junit·单元测试·lua
努力努力再努力wz10 天前
【Lua入门系列】从动态类型到变量作用域:彻底理解 local、全局变量与跨文件访问
开发语言·junit·lua
aloha_78912 天前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver