文档章节

Mockito 2 关于打标(stubbing)

honeymoose
 honeymoose
发布于 09/18 11:31
字数 550
阅读 10
收藏 0

请参考下面有关于打标的代码。

//You can mock concrete classes, not just interfaces

LinkedList mockedList = mock(LinkedList.class);

 

//stubbing

when(mockedList.get(0)).thenReturn("first");

when(mockedList.get(1)).thenThrow(new RuntimeException());

 

//following prints "first"

System.out.println(mockedList.get(0));

 

//following throws runtime exception

System.out.println(mockedList.get(1));

 

//following prints "null" because get(999) was not stubbed

System.out.println(mockedList.get(999));

 

//Although it is possible to verify a stubbed invocation, usually it's just redundant

//If your code cares what get(0) returns, then something else breaks (often even before verify() gets executed).

//If your code doesn't care what get(0) returns, then it should not be stubbed.

verify(mockedList).get(0);

  • 在默认情况下,所有的方法都会有一个返回值。mock 函数默认返回的是 null,一个空的集合或者一个被对象类型包装的内置类型。例如,针对 int/Integer 将会返回 0,针对 boolean/Boolean 将会返回 false。
  • 打标(Stubbing)可以被重写:例如一个通用的打标可以在启动的时候被确定(fixture),但是测试方法可以对其进行重写(override)。请注意重写的打标可能会在有很多标记的时候存在潜在的问题。
  • 一旦被打标,方法将会总是返回已标记的内容,这个与这个方法被调用多少次无关。
  • 最后的标记非常重要——当你对有相同参数的方法进行多次标记的时候。换句话说就是:标记的顺序是有关的(the order of stubbing matters),但是这个意义并不是很大。例如,这个只在标记完全相同的方法或者有时候参数匹配(argument matchers)被启用的时候,等情况下才会出现。, etc.

测试代码请访问 GitHub

https://github.com/cwiki-us-demo/mockito-demo-java/blob/master/src/test/java/com/ossez/demo/mockito/MockitoStubbingTest.java

请注意,上面的测试代码在运行的时候回出现错误。

这是因为在测试代码运行的时候,我们尝试输出 mockedList.get(1),这个在测试的时候,因为我们打标为抛出异常,所以这一句话将会在测试代码中抛出异常。

运行时候,抛出异常的界面如下:

 

https://www.cwiki.us/pages/viewpage.action?pageId=47843418

© 著作权归作者所有

honeymoose
粉丝 5
博文 568
码字总数 261694
作品 0
宝山
私信 提问
Mockito 简明教程

原文同步至 Mock 测试是单元测试的重要方法之一。本文介绍了基于 Java 语言的 Mock 测试框架 -- Mockito 的使用。 什么是 Mock 测试 Mock 测试就是在测试过程中,对于某些不容易构造(如 Ht...

waylau
2016/02/19
962
2
mockito learn one

mockito 介绍 mockito是一个很好用的模拟测试框架,能够让你写出简单优美测试,它不会给你残留的测试,因为它可读而且能够简单的验证错误。 如何使用? 引入依赖 <!-- https://mvnrepository...

writeademo
2018/11/21
11
0
5分钟了解Mockito

一、什么是mock测试,什么是mock对象? 先来看看下面这个示例: 从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks 从图...

闪电
2016/09/25
78
0
在spring中使用Mockito测试框架

1自动生成Mock类 在需要Mock的属性上标记@Mock注解,然后@RunWith(MockitoJUnitRunner.class)或者在setUp()方法中显示调用MockitoAnnotations.initMocks(this);生成Mock类即可。 2自动注入M...

我类个擦
2013/11/15
4.4K
1
Mockito 中文文档 五

description函数 添加验证失败时要输出的文字内容 verify(mock, description("This will print on failure")).someMethod("some arg"); Parameters: 输出的文字内容 Returns: 验证模式 Sinc......

张贴在
2016/06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Electron React Node

NPM配置手册https://cloud.tencent.com/developer/section/1490263 URL编码参考手册:https://www.w3cschool.cn/htmltags/html-urlencode.html 在配置React环境时,提示 npm ERR! code ECON......

DB_Terrill
10分钟前
0
0
Knative 实战:基于阿里云 Kafka 实现消息推送

在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何在阿里云上基于 Kafka 实现消息推送,本文给大家解锁这一新的姿势。 背景 消息队列 for Apache Kafka 是阿里云提供的分布式、高吞吐...

阿里云官方博客
10分钟前
1
0
自动评论csdn博客文章实现

正文 我们来用java代码爬取csdn博客网站,然后自动评论,这一波操作可以说是相当风骚了,话不多说,咱上代码。 第一步是登录代码,这个网上一大把,代码中用到了jsoup依赖包,用于解析html获...

码农实战
12分钟前
2
0
java速查手册Java Syntax Cheatsheet for Algorithms by TCXX

Numbers static MAX_VALUE xxxValue() public int compareTo(XXX) public boolean equals(Object o) static Integer valueOf(int i) static Integer valueOf(String s) static Integer value......

momo1987
20分钟前
1
0
vue Property or method "***" is not defined on the instance but referenced during render.报错

报错:title不是个方法 解决: 把:去掉不报错了

栾小糖
24分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部