我已经浏览了一些博客,以了解Mockito注释如何工作的基础知识.

但是,我怀疑何时可以手动实例化用@InjectMocks注释的字段,即

@InjectMocks

A a = new A();

什么时候依靠MockitoAnnotations.initMocks()功能来做同样的事情:

@InjectMocks

A a;

这取决于我们用来运行测试用例的JunitTestRunner还是依赖于Mockito框架版本?

解决方法:

这取决于你是否正在使用(声明)跑步者.

如果你使用跑步者,你不需要自己调用MockitoAnnotations.initMocks() – 跑步者会为你调用它.

通常我们会选择跑步者.但是当你想要使用其他跑步者时(比如Spring),你可以自己调用.initMocks().

为了清楚起见,MockitoAnnotations.initMocks(this)将:

>实例化使用@InjectMocks注释的字段

>创建使用@Mock注释的每个字段的模拟版本

>在@InjectMocks变量的字段中注入@Mocks(或调用其构造函数或使用其setter – 它取决于您使用的依赖注入类型)

Mockito运行器,initMocks和规则代码示例

下面的三个代码示例应该是等效的.

有跑者:

第一个片段使用了转轮,无需调用initMocks().

@RunWith(MockitoJUnitRunner.class)

public class MyClassTest {

@Mock private MyDependency myDependency;

@InjectMocks private MyClass myClass;

@Test

public void myClass_should_get_stuff_from_dependency() {

when(myDependency.getStuff()).thenReturn("stuff!");

assertThat(myClass.getDependencyStuff(), is("stuff!"));

}

}

没有跑步者手动调用.initMocks():

另一个不使用runner,因此需要setUp()方法调用我们的initMocks()朋友.

// notice there is no runner

public class MyClassTest {

@Mock private MyDependency myDependency;

@InjectMocks private MyClass myClass;

// but now you have to call initMocks() yourself

@Before

public void setUp() throws Exception {

MockitoAnnotations.initMocks(this);

}

@Test

public void myClass_should_get_stuff_from_dependency() {

when(myDependency.getStuff()).thenReturn("stuff!");

assertThat(myClass.getDependencyStuff(), is("stuff!"));

}

}

没有跑步者或手动呼叫,使用@Rule:

public class MyClassTest {

@Rule

public MockitoRule rule = MockitoJUnit.rule();

@Mock private MyDependency myDependency;

@InjectMocks private MyClass myClass;

@Test

public void myClass_should_get_stuff_from_dependency() {

when(myDependency.getStuff()).thenReturn("stuff!");

assertThat(myClass.getDependencyStuff(), is("stuff!"));

}

}

来源:http://www.icode9.com/content-1-210351.html

java inject例子_java – 手动实例化@InjectMock带注释的字段相关推荐

  1. java 泛型例子_java中的泛型的一些常见例子

    /** * @author Rollen-Holt 使用泛型 */ class hello { hello(){ } public T getName(){ return name; } public ...

  2. java gc 例子_Java 中, 为什么一个对象的实例方法在执行完成之前其对象可以被 GC 回收?...

    收到好多邀请-泻药泻药.其中有好些感觉是想来吃瓜的. 所以请让我先跑个题,为吃瓜群众献上几个传送门: private static void newSingleThreadPool() { Execu ...

  3. java抽象类例子_java抽象类经典实例分享

    在这之前有给大家详细的介绍过java抽象类,相信很多人应该都比较了解了,那么下面就要继续来给大家分享一个java抽象类的实例. 题目: 不同几何图形的面积计算公式是不一样的,可是,它们具有的特性是一样 ...

  4. java代码例子_Java与C++两大语言比较

    Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程 ...

  5. java 序列化 例子_Java序列化和反序列化例子

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段.@H_502_1@ 编程之家小编现在分享给大家,也给大家做个参考.@H_502_1@ /** * 对象序列化与反序列化 * */ impor ...

  6. java protobuf 例子_java使用protobuf例子

    Protobuf版本:2.5.0 最近研究Hadoop时,发现Hadoop的RPC使用到了Protobuf这个东西,于是就了解了这个 Protobuf Protobuf是google的一种数据交互格式 ...

  7. java初始化例子_Java 非静态初始化的例子

    在继承关系中,静态初始化.非静态初始化和构造函数的执行顺序 public class ExA { static { System.out.println("父类--静态代码块"); ...

  8. java 邮件 附件_java中javamail发送带附件的邮件实现方法

    本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理em ...

  9. java+mock+例子_java – 如何使用PowerMock和Mockito模拟枚举类的实例?

    我试着按照这个非常相似的问题的答案提供的例子,但它对我不起作用.我收到以下错误消息: java.lang.IllegalArgumentException: Cannot subclass final ...

最新文章

  1. Windows系统如何使用宝塔面板一键快速搭建本地服务器环境(LNMP/LAMP)
  2. QT安装由问题的,安装后发现有些控件标签名显示不了
  3. 【开放书】《命令行数据科学指南(第二版)》
  4. 2015/5/9站立会议(补发)
  5. hadoop+spark生态系统操作与指南非影印版_Spark背景知识学习
  6. 测试一年多,上线就崩溃!微服务到底应该怎么测试?
  7. web 开发一个能进行人员管理(查询,删除,添加)的应用
  8. apache下虚拟域名配置
  9. Jupyter notebook、JypterLab的本地安装与使用
  10. 小波神经网络模型matlab,神经网络预测模型优点
  11. CSAPP,拆弹到一点!!!
  12. 计算机文件夹操作有哪些,电脑操作常用的快捷键有哪些
  13. 截止失真放大电路_模拟放大器
  14. UVA12304直线,圆,点的综合应用
  15. 前端要失业了么,sketch-code让草图秒变HTML
  16. SpringBoot banner更改
  17. 图灵 数理逻辑 人工智能 图灵机与计算问题 论文
  18. 2021csp/s初赛
  19. windows xp 驱动开发(十八) USB驱动程序开发用到的工具总结
  20. 更换内存条、固态硬盘、双系统配置全纪录

热门文章

  1. 复盘线上的一次OOM和性能优化!
  2. 面试官:如何实现幂等性校验?
  3. Java 200+ 面试题补充 ThreadLocal 模块
  4. Oracle view 小结片段
  5. 常量指针与指针常量勘误
  6. Python:通过SNMP协议获取H3C、华为交换机的VLAN信息及ARP地址表
  7. centos 8 安装使用配置
  8. vue+axios请求时设置request header请求头(带上token)
  9. 玛酷机器人课程视频_建阳玛酷机器人丨2019WRO机器人比赛凯旋而归!
  10. centos配置网络笔记