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

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

  2. @InjectMocks

    自动完成以下操作:

    • 实例化 OrderService

    • paymentServiceinventoryService 注入到 OrderService 的对应字段中

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

  3. 测试逻辑

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

    • 调用被测方法 placeOrder()

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

相关推荐
java搬砖工-苤-初心不变1 小时前
基于 lua_shared_dict 的本地内存限流实现
开发语言·junit·lua
不要再敲了3 天前
掌握单元测试的利器:JUnit 注解从入门到精通
junit·单元测试
山楂树下懒猴子5 天前
ChatAI项目-ChatGPT-SDK组件工程
人工智能·chatgpt·junit·https·log4j·intellij-idea·mybatis
我发在否7 天前
Lua > OpenResty Lua Module
junit
一线灵8 天前
跨平台游戏引擎 Axmol-2.8.1 发布
junit·游戏引擎
奔跑吧邓邓子10 天前
【Java实战㉖】深入Java单元测试:JUnit 5实战指南
java·junit·单元测试·实战·junit5
A尘埃12 天前
缓存工具服务(封装缓存击穿+缓存穿透+缓存雪崩)
缓存·junit·缓存工具类封装
夜猫逐梦13 天前
【lua】Lua 入门教程:从环境搭建到基础编程
junit
斯普信专业组17 天前
Fluent Bit系列:字符集转码测试(上)
junit·fluent bit
大得36918 天前
nginx结合lua做转发,负载均衡
nginx·junit·lua