我是靠谱客的博主 饱满西牛,最近开发中收集的这篇文章主要介绍Mockito中@Mock与@InjectMockMockito中@Mock与@InjectMock,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Mockito中@Mock与@InjectMock

Mockito是java单元测试中,最常用的mock工具之一,提供了诸多打桩方法和注解。其中有两个比较常用的注解,@Mock和@InjectMock,名字和在代码中使用的位置都很像,对于初学者,很容易误解。下面花一点时间,做个简单的介绍。

介绍之前,首先要明确一点:@Mock和@InjectMock这两个注解除了名字和使用方式比较像之外,是在功能上无任何可类比性的完全不同的东西。

1、 @Mock:在Mockito中用于创建mock对象,使用方法如下:

@Mock
private ClassName mockedObject;

上面代码创建了一个名为mockedObject,类型为ClassName的mock对象,该对象所有的方法被置空,根据测试代码逻辑的需要使用

2、 @InjectMock:这是一个注入mock对象的操作,参考如下代码:

@Mock
private ClassName mockedObject;

@InjectMock
private TestedClass TestedObj = new TestedClass();

这段代码中,@InjectMock下面声明了一个待测试的对象,若该对象有类型为ClassName的成员变量,@Mock定义的mock对象将会被注入到这个待测试的对象中,既TestedObj的类型为ClassName的成员被直接赋值为mockedObject。

补充几点:

  1. @Mock创建的是全部mock的对象,既在对具体的方法打桩之前,mock对象的所有属性和方法全被置空(0或者null);与之对应的是@Spy这个注解,@Spy可以创建部分mock的对象,部分mock对象的所有成员方法都会按照原方法的逻辑执行,直到被打桩返回某个具体的值。@Mock和@Spy才是两个具有可比性的概念。
  2. Mokcito的mock()方法功能与@Mock相同,只是使用方式和场景不同。同样的,@Spy也对应一个spy()方法。
  3. @Mock和@Spy注解的对象,均可被@InjectMock注入到待处理的对象中。

转发自:Mockito中@Mock与@InjectMock

最后

以上就是饱满西牛为你收集整理的Mockito中@Mock与@InjectMockMockito中@Mock与@InjectMock的全部内容,希望文章能够帮你解决Mockito中@Mock与@InjectMockMockito中@Mock与@InjectMock所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部