mockito环境配置_Mockito –使用全局配置的SmartNull在NPE上提供更好的错误消息

mockito环境配置

编写Mockito参考卡后,我有机会仔细研究了Mockito不太流行但非常有用的功能。 其中一些过于先进或太稀少,无法在refcard中进行描述,因此应简短说明。 其中之一就是SmartNull。 当前,非空方法返回适用于已知类型(例如:0,false,空集合)的“安全空值”,或者在其他情况下返回null。 可以返回SmartNull to而不是纯null来在NPE上收到更多描述性错误消息。

发生NullPointerException时,不仅是一行:

java.lang.NullPointerExceptionat PlantWaterer.generateNPE(PlantWaterer.java:24)at DefaultValuesTest.shouldReturnNicerErrorMessageOnNPE(DefaultValuesTest.java:64)

我们还获得了描述性信息,说明未使用哪种方法:

org.mockito.exceptions.verification.SmartNullPointerException:
You have a NullPointerException here:
?> at PlantWaterer.generateNPE(PlantWaterer.java: 24)
because this method call was ?not? stubbed correctly:
?> at PlantWaterer.generateNPE(PlantWaterer.java: 24)
wateringScheduler.returnNull();at PlantWaterer.generateNPE(PlantWaterer.java: 24)at DefaultValuesTest.shouldReturnNicerErrorMessageOnNPE(DefaultValuesTest.java:64)

可以指示特定的模拟返回SmartNull而不是null值:

PlantWaterer plantWatererMock =mock(PlantWaterer.class, Mockito.RETURNS_SMART_NULLS);

要么

@Mock(answer = Answers.RETURNS_SMART_NULLS)
private PlantWaterer plantWatererMock;

SmartNull可能是Mockito 2.0中的默认行为,但是为了实现1.9.x中的向后兼容性,必须明确告知每个模拟都使用它。 需要编写另一段样板代码导致几乎没有人使用SmartNull,尽管它是一个非常有用的功能。 Mockito的第二个几乎未知的元素进入了游戏-全局配置。 通常,不需要配置Mockito。 它只是工作。 但是在极少数情况下,框架的作者留下了一个门,该门允许覆盖一些核心行为的默认配置,包括未打桩方法的默认答案策略。

为了使其正常工作,有必要创建实现IMockitoConfiguration接口的org.mockito.configuration.MockitoConfiguration类( 必须在该软件包中 )。 通常,扩展DefaultMockitoConfiguration类并且仅覆盖所需的行为是很舒服的。

package org.mockito.configuration;import org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls;
import org.mockito.stubbing.Answer;public class MockitoConfiguration extends DefaultMockitoConfiguration {public Answer<Object> getDefaultAnswer() {return new ReturnsSmartNulls();}
}

在准备之后,对于模块中的每个模拟,我们都应该获取带有详细输出的SmartNullPointerException而不是纯NullPointerException。

@Test(expectedExceptions = SmartNullPointerException.class)
public void shouldReturnNicerErrorMessageOnNPE() {//given//Mockito.RETURNS_SMART_NULLS not needed anymoreWateringScheduler wateringSchedulerMock = mock(WateringScheduler.class);WaterSource waterSourceMock = mock(WaterSource.class);PlantWaterer plantWatererMock =new PlantWaterer(waterSourceMock, wateringSchedulerMock);//whenplantWatererMock.generateNPE();//then//SmartNullPointerException exception expected
}

这篇文章是超越Mockito refcard系列的第一部分。

参考: 除了Mockito refcard之外-第1部分–来自Solid Soft博客的JCG合作伙伴 Marcin Zajaczkowski在全局配置的SmartNull上,在NPE上提供了更好的错误消息 。


翻译自: https://www.javacodegeeks.com/2012/07/mockito-better-error-messages-on-npe.html

mockito环境配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html js清除缓存,js清除浏览器缓存的几种方法

JS 缓存的问题一直都是我们又爱又恨的东西。也是我们比较头痛的问题&#xff0c; 一方面为了提高网站响应速度,减少服务器的负担,和节省带宽&#xff0c;将需要将静态资源缓存在客户端&#xff0c; 但是另一方面&#xff0c;当js 文件有改动的时候&#xff0c;如何快速的将客户…

spring MVC 的MultipartFile转File读取

第一种方法&#xff1a; MultipartFile file xxx; CommonsMultipartFile cf (CommonsMultipartFile)file; DiskFileItem fi (DiskFileItem)cf.getFileItem(); File f fi.getStoreLocation(); 会在项目的根目录的临时文件夹下生成一个文件&#xff1b; 第二…

代理模式介绍

代表&#xff1a;被选中或当选为他人投票或代表他人的人– Merriam-Webster 。 委托模式&#xff1a;在软件工程中&#xff0c;委托模式是面向对象编程中的一种设计模式&#xff0c;其中&#xff0c;一个对象而不是执行其声明的任务之一&#xff0c;而是将该任务委托给一个关联…

江西理工大学 微型计算机原理,江西理工大学-微机原理考试(wenwei)作业.docx

江西理工大学-微机原理考试(wenwei)作业第一章1. 在计算机内部为什么要采用二进制数而不采用十进制数&#xff1f;  2. 设机器字长为6位&#xff0c;写出下列各数原码、补码和移码&#xff1a;  10101 11111 10000 ?-10101 -11111 -10000  3. 利用补码进行加/减法运算比…

C语言中数组做函数参数的问题

数组做函数参数&#xff0c;会退化成为一个指针变量。因此在进行数组参数传递的同时&#xff0c;需要传递一个数组长度的参数变量。 数组长度可以通过sizeof(arr)/siezof(arr[0])来得到。关于这个sizeof操作符&#xff0c;简单的理解就是求得指针指向的内存块的大小。 当数组作…

计算机图形标定学,计算机图形学(璩柏青)第10章空间形体的三维重建与图像处理.ppt...

计算机图形学(璩柏青)第10章空间形体的三维重建与图像处理相应可得到各单元方程组集&#xff0c; 即总体方程为 整个SFS问题求解是一个逐次线性化过程&#xff0c;可按如下步骤实现&#xff1a; (1) 先给定一定的初值R(p,q)&#xff1b; (2) 局部线性化反射图函数&#xff…

线程并发库和线程池的作用_并发–顺序线程和原始线程

线程并发库和线程池的作用不久前&#xff0c;我参与了一个项目&#xff0c;该项目的报告流程如下&#xff1a; 用户会要求举报 报告要求将被翻译成较小的部分 基于零件/节的类型的每个零件的报告将由报告生成器生成 组成报告的各个部分将重新组合成最终报告&#xff0c;并返…

ipad2018编写html,IT教程:ipad6是ipad2018吗

科技就如同电灯发出的光一样&#xff0c;点亮我们的世界&#xff0c;点亮我们的生活&#xff0c;这一段时间以来ipad6是ipad2018吗的消息络绎不绝是什么原因呢?接下来就让我们一起了解一下吧。大家好&#xff0c;我是智能客服时间君&#xff0c;上述问题将由我为大家进行解答。…

Web工程师修行笔记_必备单词(第三部)

历经千辛万苦&#xff0c;整理了软件开发过程中必备英文单词&#xff0c;助你走向编程巅峰 !!! 连最难的英文单词你都征服了&#xff0c;你还怕什么&#xff1f; (拒绝死记硬背&#xff0c;平时多看看&#xff0c;多用于代码中&#xff0c;&#xff09; 【不求全部都会&#xf…

流的多层次分组

1.简介 使用Java 8流&#xff0c;可以很容易地根据不同的标准对对象集合进行分组。 在这篇文章中&#xff0c;我们将看到如何从简单的单级分组到更复杂的&#xff0c;涉及多个级分组的分组。 我们将使用两个类来表示我们要分组的对象&#xff1a;人和宠物。 人类 public cla…

华为微型计算机b515,华为MateStation B515台式机曝光:五种配置

之前华为官网曾上架了台式机MateStation B515&#xff0c;这引起了很多网友的关注&#xff0c;不过实际情况是&#xff0c;它只是针对政企渠道&#xff0c;不过官方当时并没有给出新品的售价。从网友最新曝光的细节看&#xff0c;MateStation B515要比之前传闻的价格便宜不少&a…

冈仁波齐

昨日看了《冈仁波齐》&#xff0c;其实第一次听这部电影还是在网易云看到朴树的新歌《No Fear In My Heart》时知道有这样一部电影的&#xff1b; 抱着好奇心去看&#xff0c;发现这确实是一部不错的电影&#xff0c;具体好在哪里我也不是说得很清楚&#xff0c;只知道我在看电…

计算机图形相关输出设备,计算机图形输出设备.ppt

计算机图形输出设备第2章 计算机图形系统 2.1 计算机图形系统概述 2.2 基于Windows的图形程序开发方法 2.3 OpenGL介绍 2.1 计算机图形系统概述 2.1.1 计算机图形外部设备 新型显示器 计算机图形输入设备 计算机图形输出设备 2.1.2 计算机图形软件 几何造型平台 CAD/CAM 计算机…

Linux下用ls和du命令查看文件以及文件夹大小

ls的用法 ls -l |grep "^-"|wc -l或find ./company -type f | wc -l 查看某文件夹下文件的个数&#xff0c;包括子文件夹里的。 ls -lR|grep "^-"|wc -l 查看某文件夹下文件夹的个数&#xff0c;包括子文件夹里的。 ls -lR|grep "^d"|wc -l …

四川高职计算机二本线学校,全网首发!四川省本科二批次2019年对口高职投档录取线出炉...

原标题&#xff1a;全网首发&#xff01;四川省本科二批次2019年对口高职投档录取线出炉四川省2019年高校招生本科录取接近尾声&#xff0c;二本批次征集志愿于8月1日进行。与此同时&#xff0c;专科批相关录取工作也进入我们视野。四川省各高校2019年对口高职调档线我省高职院…

app engine_App Engine中的Google Services身份验证,第1部分

app engine这篇文章将说明如何构建一个简单的Google App Engine&#xff08;GAE&#xff09;Java应用程序&#xff0c;该应用程序可以针对Google进行身份验证&#xff0c;并利用Google的OAuth授权访问Google的API服务&#xff08;例如Google Docs&#xff09;。 此外&#xff0…

Angular最新教程-第六节编写响应式导航栏

这节课我们讲解如何使用bootstrap 4 编写响应式布局。 参考图我们还是参照Angular中文社区http://www.angularjs.cn/ 图中标注红色的部分&#xff0c;我自己不是很喜欢&#xff0c;所以做了一点小改动。 他这里也没有做响应式布局&#xff0c;所以样式就不抄他的&#xff0c…

使用Spring-Retry重试处理

只要软件组件相互通信&#xff0c;就有可能出现临时的自我纠正错误。 此类故障包括服务的暂时不可用&#xff0c;网络连接的暂时丢失或服务繁忙时出现的超时。 在这种情况下&#xff0c;适当的重试处理可以减少这些故障可能引起的问题。 在这篇文章中&#xff0c;我们将看到如…

计算机在智慧交通的应用论文,智能交通的毕业论文

智能交通的毕业论文智能运输系统的研究许多国家都投入了巨大的人力和物力,并成为继航空航天、军事领域之后高新技术应用最集中的领域。下面为大家分享了有关智能交通的论文&#xff0c;欢迎欣赏&#xff01;摘 要&#xff1a;八十年代以来&#xff0c;世界一些发达国家纷纷投入…

MySQL5.5安装教程

1、 官网下载mysql5.5 下载地址&#xff1a; http://dev.mysql.com/downloads/mysql/5.5.html#downloads 2、 安装mysql5.5 注意&#xff0c;安装之前&#xff0c;请关闭杀毒软件。 &#xff08;1&#xff09; 打开下载的mysql-5.5.53-winx64.msi &#xff08;2&#xff09; 点…