mockito java_Java:使用Mockito模拟ResultSet

mockito java

这篇文章展示了如何使用Mockito模拟java.sql.ResultSet 。 它可用于帮助对ResultSet进行操作的单元测试代码(例如ResultSetExtractor )而无需依赖外部数据源。

您可以通过提供列名列表和2D数据数组来创建MockResultSet 。 例如:

var rs = MockResultSet.create(new String[] { "name", "age" }, //columnsnew Object[][] { // data{ "Alice", 20 },{ "Bob", 35 },{ "Charles", 50 }});

MockResultSet的代码如下所示(也可以在我的GitHub Repository中找到 )。 请注意,我仅模拟了诸如nextgetStringgetObject类的一些方法,但是通过遵循相同的模式来模拟其余方法非常容易。

public class MockResultSet {private final Map<String, Integer> columnIndices;private final Object[][] data;private int rowIndex;private MockResultSet(final String[] columnNames,final Object[][] data) {// create a map of column name to column indexthis.columnIndices = IntStream.range(0, columnNames.length).boxed().collect(Collectors.toMap(k -> columnNames[k],Function.identity(),(a, b) ->{ throw new RuntimeException("Duplicate column " + a); },LinkedHashMap::new));this.data = data;this.rowIndex = -1;}private ResultSet buildMock() throws SQLException {final var rs = mock(ResultSet.class);// mock rs.next()doAnswer(invocation -> {rowIndex++;return rowIndex < data.length;}).when(rs).next();// mock rs.getString(columnName)doAnswer(invocation -> {final var columnName = invocation.getArgumentAt(0, String.class);final var columnIndex = columnIndices.get(columnName);return (String) data[rowIndex][columnIndex];}).when(rs).getString(anyString());// mock rs.getObject(columnIndex)doAnswer(invocation -> {final var index = invocation.getArgumentAt(0, Integer.class);return data[rowIndex][index - 1];}).when(rs).getObject(anyInt());final var rsmd = mock(ResultSetMetaData.class);// mock rsmd.getColumnCount()doReturn(columnIndices.size()).when(rsmd).getColumnCount();// mock rs.getMetaData()doReturn(rsmd).when(rs).getMetaData();return rs;}/*** Creates the mock ResultSet.** @param columnNames the names of the columns* @param data* @return a mocked ResultSet* @throws SQLException*/public static ResultSet create(final String[] columnNames,final Object[][] data)throws SQLException {return new MockResultSet(columnNames, data).buildMock();}
}

翻译自: https://www.javacodegeeks.com/2018/09/java-mocking-resultset-using-mockito.html

mockito java

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

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

相关文章

服务中心Eureka

一、服务消费者-注册服务中心 测试结果 二、消费者通过Eureka访问提供者 测试结果 Consumer ConsumerController package com.william.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance;…

Linux 命令之 newgrp -- 登入另一个群组

文章目录命令介绍常用选项参考示例切换登录用户组命令介绍 newgrp 命令的英文全称为“new group”&#xff0c;使用该命令指定用户组名称&#xff0c;执行命令后&#xff0c;其实是以相同的用户名&#xff0c;但是以另一个群组名称&#xff0c;再次登入系统。所以本质上是切换…

pivotal_Spring Data Pivotal Gemfire教程

pivotal1. Spring Data Pivotal Gemfire –简介 在这篇文章中&#xff0c;我们将介绍有关Spring Data Pivotal Gemfire的全面教程。 Pivotal Gemfire是由Apache Geode支持的内存中数据网格解决方案。 使用Pivotal Gemfire构建的应用程序使您可以在分布式服务器节点之间轻松扩展…

Linux命令之 chsh -- 用来更换登录系统时使用的shell

文章目录命令简介常用选项参考示例查看系统安装了哪些shell的两种方法查看当前正在使用的 shell修改当前登录用户的shell命令简介 chsh 命令用来更换登录系统时使用的shell。若不指定任何参数与用户名称&#xff0c;则 chsh 会以应答的方式进行设置。 chsh 用于更改登录 shell…

layui绑定json_JSON-B非对称属性绑定

layui绑定jsonJSON-B规范定义了诸如JsonbProperty或JsonbTransient类的绑定注释&#xff0c;以声明方式将Java对象映射到JSON&#xff0c;然后又映射回JSON。 这些注释可以“非对称地”用于定义序列化和反序列化的不同处理。 如果在Java属性上或在getter和setter上都注释了JSO…

熔断器

一、引入依赖 1.consumer_service中加入依赖 <!--开启熔断器--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>2.开启熔断的注解 //注…

Linux 命令之 pwck -- 用来验证系统认证文件内容和格式的完整性

文章目录命令介绍常用选项参考示例检验用户配置文件 /etc/passwd和/etc/shadow的内容是否合法、完整命令介绍 pwck 命令用来校验用户配置文件 /etc/passwd 和 /etc/shadow 内容是否合法或完整 常用选项 选项说明-q仅报告错误信息-s以用户id排序文件“/etc/passwd”和“/etc/…

不停机与停机更新_Istio的零停机滚动更新

不停机与停机更新本系列文章的第一部分介绍了如何在Kubernetes集群中实现真正的零停机时间更新。 我们专门解决了将流量从旧实例切换到新实例时出现的请求失败。 本文将展示如何使用Istio群集实现相同的目标。 服务网格技术&#xff08;例如Istio&#xff09;通常与容器编排结…

远程调用 Spring Cloud Feign

一、 Feign简介 Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口&#xff0c;然后在上面添加注解。不再需要拼接URL&#xff0c;参数等操作。项目主页&#xff1a;https://github.com/Ope…

Linux 命令之 pwconv -- 开启用户的投影密码

命令介绍 该命令根据文件 /etc/passwd 创建影子文件 /etc/shadow。 用来开启用户的投影密码。Linux系统里的用户和群组密码&#xff0c;本来分别存放在名称为 passwd 和 group 的文件中&#xff0c; 这两个文件位于 /etc 目录下。因系统运作所需&#xff0c;任何人都得以读取…

plsql如何执行单个语句_在单个try-with-resources语句中仔细指定多个资源

plsql如何执行单个语句Java 7最有用的新功能之一是引入了try-with-resources语句 [AKA 自动资源管理 &#xff08; ARM &#xff09;]。 try-with-resources语句的吸引力在于它承诺 “确保在语句末尾关闭每个资源”。 在这种情况下&#xff0c;“资源”是实现AutoCloseable及其…

Spring Cloud Feign 负载均衡

一、Feign负载均衡介绍 Feign本身集成了Ribbon依赖和自动配置&#xff0c;因此不需要额外引入依赖&#xff0c;也不需要再注册RestTemplate对象 Feign内置的ribbon默认设置了请求超时时长&#xff0c;默认是1000&#xff0c;可以修改 ribbon内部有重试机制&#xff0c;一旦超…

Linux 命令之 pwunconv -- 关闭投影密码

文章目录命令介绍命令介绍 pwunconv 命令与 pwconv 功能相反&#xff0c;用来关闭用户的投影密码。它会将密码从 /etc/shadow 文件内&#xff0c;重新回存到 /etc/passwd 文件中。换句话说&#xff0c;pwunconv 命令将文件 /etc/shadow 中的数据同步到文件 /etc/passwd 中&…

apache ignite_Apache Ignite,Hazelcast,Cassandra和Tarantool之间的主要区别

apache igniteApache Ignite在世界范围内得到广泛使用&#xff0c;并且一直在增长。 诸如Barclays&#xff0c;Misys&#xff0c;Sberbank&#xff08;欧洲第三大银行&#xff09;&#xff0c;ING&#xff0c;JacTravel之类的公司都使用Ignite来增强其架构的功能&#xff0c;这…

Spring Cloud Feign 熔断器支持

一、实现步骤 在配置文件application.yml中开启feign熔断器支持编写FallBack处理类&#xff0c;实现FeignClient客户端在FeignClient注解中&#xff0c;指定FallBack处理类。测试 1. 在配置文件application.yml中开启feign熔断器支持&#xff1a;默认关闭 # 开启Feign的熔断功…

system health_可重复使用的MicroProfile Health探针

system healthMicroProfile Health API是一种非常基本的API&#xff0c;它基于一个或多个Health Probe报告您的服务状态。 在某些服务器或群集控制器需要决定是否以及何时重新启动实例的情况下&#xff0c;这非常有用。 在应用程序中使用MicroProfile Health API就像实现一个&…

Linux 命令之 visudo -- 编辑/etc/sudoers文件

文章目录命令介绍常用选项参考示例编辑文件 /etc/sudoers检查 /etc/sudoers 文件的语法错误、所有者和模式命令介绍 使用 visudo 命令可以打开 /etc/sudoers 文件进行编辑。当然 vim 也可以编辑该文件&#xff0c;但是不建议这样做&#xff0c;因为使用命令 visudo 编辑文件 /…

Spring Cloud Feign 请求压缩 、Feign的日志级别配置

一、Spring Cloud Feign 请求压缩 #开启压缩compression:request:enabled: true # 开启请求压缩#最小触发压缩的大小min-request-size: 2048#触发压缩数据类型&#xff0c;&#xff08;注意不能使用"" ,&#xff09;mime-types: text/xml, application/xml, applicat…

Linux 命令之 sudoedit -- 以另外一个用户身份编辑文件

文章目录命令介绍常用选项参考示例以用户 root 身份来编辑指定的文件以其它用户身份编辑指定的文件命令介绍 查看使用帮助&#xff0c;感觉和命令 sudo 完全一样。 [mysqlhtlwk0001host ~]$ sudoedit -h sudoedit - 以其他用户身份编辑文件usage: sudoedit [-AknS] [-r role]…

文档在线签名_为什么需要为文档和合同切换到在线签名

文档在线签名嘿&#xff0c;怪胎&#xff0c; 今天&#xff0c;我们为您带来一些不同。 无论您是开发人员&#xff0c;经理还是设计师&#xff0c;这都会提高您的生产力和效率。 对于公司和个人而言&#xff0c;良好地管理文书工作是强大基础的最重要部分之一。 将工作流程从…