@Mock 和 @InjectMocks的区别

说明

在 Mockito 中,@Mock@InjectMocks 是用于处理模拟对象的注解,但它们有不同的作用和用途:

  1. @Mock 注解:

    • @Mock 注解用于创建一个模拟对象。模拟对象是用来模拟一个类或接口的实例,以便在测试中模拟该对象的行为。
    • 当您使用 @Mock 注解标记一个字段时,Mockito 会自动为该字段创建一个模拟对象,并将其初始化。
    • @Mock 主要用于模拟测试目标类(被测试类)中的依赖项或其他与被测试类交互的对象。
    @Mock
    private SomeDependency dependency; // 创建 SomeDependency 类的模拟对象
    
  2. @InjectMocks 注解:

    • @InjectMocks 注解用于注入模拟对象到被测试类(测试目标类)的字段中。
    • 当您使用 @InjectMocks 注解标记一个字段时,Mockito 会尝试将模拟对象自动注入到该字段中,以便在测试中使用模拟对象来模拟依赖项。
    • @InjectMocks 主要用于注入模拟对象到被测试类中,以模拟被测试类的依赖项。
    @InjectMocks
    private SomeService service; // 将模拟对象自动注入到 SomeService 类中
    

总结:

  • @Mock 用于创建模拟对象。
  • @InjectMocks 用于注入模拟对象到被测试类中,以模拟依赖项。
  • 通常,您会在测试中同时使用这两个注解,创建模拟对象并将其注入到被测试类中,以便模拟依赖项并进行单元测试。

实战

    private UserService userService;
 	@Mock
    private UserDao userDao;
    @Before
    public void setUp() {
        userService = new UserService(userDao);
    }

等价于

	@InjectMocks
    private UserService userService;
 	@Mock
    private UserDao userDao;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值