Mock和@InjectMocks的区别及说明

 更新时间:2024年11月11日 09:12:59   作者:有点野的程序猿  
@Mock和@InjectMocks是Mockito框架中的两个注解,前者用于创建模拟对象,后者用于将模拟对象注入到被测试类中

@Mock和@InjectMocks的区别

@Mock和@InjectMocks是Mockito框架中的两个注解。

@Mock

  • 用于创建模拟对象,创建的模拟对象的属性值都适用默认值进行初始化,基本数据类型例如int默认为0,boolean默认为false,对于引用数据类型都是用null进行初始化。
  • 通过该注解可以创建一个模拟对象,模拟对象具有被模拟的类的相同行为,并且允许自己定义方法的返回值和行为。

@InjectMocks

  • 用于将模拟对象注入到被测试类中的相应字段
  • 通过该注解可以自动将模拟对象注入到被测试类中标记为@InjectMocks的字段中
  • 可以理解为使用@Mock创建出来的对象注入到@InjectMocks创建的对象中
  • 这样被测试类就可以使用模拟对象作为其依赖了

代码示例

public class AClassTest{
    @Mock
    private AClass aClass;
    @Test
    public void testMethodA() {
        //使用aClass进行测试
    }
}

public class BClassTest{
    @Mock
    private AClass aClass;
    
    @InjectMocks
    private BClass bClass;
    
    @Test
    public void testMethodB() {
        //使用bClass进行测试,其中aClass已经被注入到了bClass中了
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java设计模式之原型模式详细解读

    Java设计模式之原型模式详细解读

    这篇文章主要介绍了Java设计模式之原型模式详细解读,原型模式属于创建型设计模式,用于创建重复的对象,且同时又保证了性能,该设计模式的好处是将对象的创建与调用方分离,需要的朋友可以参考下
    2023-12-12
  • Java中的Native关键字讲解

    Java中的Native关键字讲解

    本文介绍了Java中的Native关键字,native关键字是架起本机语言和JAVA之间鸿沟的桥梁。如果我们的软件与硬件的交互在使用预先存在的代码时更有效,那么这可以作为一个关键环节。与从头开始设计新的应用程序代码相比,只要可以避免,它就可以使实现工作更少,下面来了解集体内容
    2021-12-12
  • SpringMVC之RequestContextHolder详细解析

    SpringMVC之RequestContextHolder详细解析

    这篇文章主要介绍了SpringMVC之RequestContextHolder详细解析,正常来说在service层是没有request的,然而直接从controlller传过来的话解决方法太粗暴,后来发现了SpringMVC提供的RequestContextHolder,需要的朋友可以参考下
    2023-11-11
  • SpringBoot集成RocketMQ的使用示例

    SpringBoot集成RocketMQ的使用示例

    RocketMQ是阿里巴巴开源的一款消息中间件,性能优秀,功能齐全,被广泛应用在各种业务场景,本文就来介绍一下SpringBoot集成RocketMQ的使用示例,感兴趣的可以了解一下
    2023-11-11
  • redis.clients.jedis.exceptions.JedisMovedDataException异常解决

    redis.clients.jedis.exceptions.JedisMovedDataException异常解决

    redis.clients.jedis.exceptions.JedisMovedDataException 异常是在使用 Jedis 客户端与 Redis 集群进行交互时发生的,下面就来介绍一下解决方法,感兴趣的可以了解一下
    2024-05-05
  • Java数据结构之顺序表篇

    Java数据结构之顺序表篇

    顺序表,全名顺序存储结构,是线性表的一种。线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外,不仅如此,顺序表对数据物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时数据元素间不留缝隙
    2022-01-01
  • Java String类字符串的理解与认知

    Java String类字符串的理解与认知

    String字符串和char字符不同,char使用单引号,只能表示一个字符,字符串就是一段文本。String是个类。这个类使用final修饰,所以这个类是不可以继承扩充和修改它的方法的
    2021-10-10
  • 拦截Druid数据源自动注入帐密解密实现详解

    拦截Druid数据源自动注入帐密解密实现详解

    这篇文章主要为大家介绍了拦截Druid数据源自动注入帐密解密实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • MybatisPlus实现逻辑删除的示例代码

    MybatisPlus实现逻辑删除的示例代码

    本文主要介绍了Mybatis Plus实现逻辑删除的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 基于TCP通信丢包原因总结(推荐)

    基于TCP通信丢包原因总结(推荐)

    下面小编就为大家带来一篇基于TCP通信丢包原因总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论