Mockito 2 关于打标(stubbing)

简介: 请参考下面有关于打标的代码。//You can mock concrete classes, not just interfacesLinkedList mockedList = mock(LinkedList.

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

//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),这个在测试的时候,因为我们打标为抛出异常,所以这一句话将会在测试代码中抛出异常。

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

stubbing_RuntimeException

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

目录
相关文章
|
10天前
|
安全 前端开发 Java
Springboot中如何优雅的进行字段以及业务校验
Springboot中如何优雅的进行字段以及业务校验
|
12天前
|
Java
springboot分组检验
介绍Validation进行参数校验的做法
14 2
|
Java 测试技术 容器
Springboot+mockito进行单元测试心得整体
## SpringBoot应用测试 测试Springboot应用需要依赖一个非常重要的注解@SpringBootTest,这个注解会为测试用例构建Spring容器。@SpringBootTest注解修饰的测试用例默认不会启动web容器,如果需要启动web容器需要设置webEnvironment属性: * MOCK(默认):会启动一个mock的web server,可以配合@AutoConfig
6283 0
|
10月前
|
XML Java API
网站是怎么屏蔽脏话的呢:简单学会SpringBoot项目敏感词、违规词过滤方案
一个社区最重要的就是交流氛围与审查违规,而这两者都少不了对于敏感词进行过滤的自动维护措施。基于这样的措施,我们才能基本保证用户在使用社区的过程中,不至于被敏感违规词汇包围,才能够正常的进行发布帖子和评论,享受美好的社区氛围。目前,对于 springboot 项目也有较为成熟的敏感词过滤方案。
268 0
网站是怎么屏蔽脏话的呢:简单学会SpringBoot项目敏感词、违规词过滤方案
|
10月前
|
前端开发 Java 数据库
SpringBoot分组校验及自定义校验注解
在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性。在此之前写过一篇SpringBoot统一参数校验主要介绍了一些简单的校验方法。而这篇则是介绍一些进阶的校验方式。比如说:在某个接口编写的过程中肯定会遇到,当xxType值为A,paramA值必传。xxType值为B,paramB值必须传。对于这样的,通常的做法就是在controller加上各种if判断。显然这样的代码是不够优雅的,而分组校验及自定义参数校验,就是来解决这个问题的。
|
11月前
|
Java
SpringBoot 采用JsonSerializer和Aop 实现可控制的数据脱敏
最近在写一个功能,对用户敏感的数据进行脱敏,在网上看一圈基本上都是全局范围的,我觉得应该更加灵活,在不同场景,不同业务下进行脱敏更加合适。
416 0
|
12月前
|
消息中间件 JavaScript 小程序
仅需一个注解,实现 SpringBoot 项目中的隐私数据脱敏!
仅需一个注解,实现 SpringBoot 项目中的隐私数据脱敏!
|
监控 Java 测试技术
【SpringBoot 2】(十一)单元测试JUnit 5 指标监控(一)
【SpringBoot 2】(十一)单元测试JUnit 5 指标监控(一)
167 0
【SpringBoot 2】(十一)单元测试JUnit 5 指标监控(一)
|
监控 数据可视化 Java
【SpringBoot 2】(十一)单元测试JUnit 5 指标监控(三)
【SpringBoot 2】(十一)单元测试JUnit 5 指标监控(三)
129 0
【SpringBoot 2】(十一)单元测试JUnit 5 指标监控(三)
|
Java Spring
@Qualifier高级应用---按类别批量依赖注入(QualifierAnnotationAutowireCandidateResolver原理详解)【享学Spring】(中)
@Qualifier高级应用---按类别批量依赖注入(QualifierAnnotationAutowireCandidateResolver原理详解)【享学Spring】(中)