Spring JdbcTemplate RowMapper Junit Test Example
Spring JdbcTemplate RowMapper Junit Test Example
文章目录
- Spring JdbcTemplate RowMapper Junit Test Example
这个例子展示了如何编写
junit
来测试Spring RowMapper
的功能,同时使用Mockito
模拟JdbcTemplate
。这也增加了
RowMapper
代码的代码覆盖率。下面是使用
Lambda
使用RowMapper
返回用户列表的 DAO 类。
Spring JdbcTemplate RowMapper Example with Lambdas
package com.wsq.dao;import java.sql.ResultSet;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;import com.wsq.beans.User;@Repository
public class UserDAO {@Autowiredprivate JdbcTemplate jdbcTemplate;public List<User> getAllUsers() {return jdbcTemplate.query("SELECT ID, NAME, STATUS FROM USER", (ResultSet rs, int rowNum) -> {User user = new User();user.setId(rs.getInt("ID"));user.setName(rs.getString("NAME"));user.setStatus(rs.getBoolean("STATUS"));return user;});}}
- 下面是通过模拟 JdbcTemplate 返回两行来测试 RowMapper 代码的 Junit 测试类。
Spring JdbcTemplate RowMapper Junit test example
package com.wsq.dao;import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;import com.wsq.beans.User;@RunWith(MockitoJUnitRunner.class)
public class UserDAOTest {@Mockprivate JdbcTemplate jdbcTemplate;@InjectMocksprivate UserDAO userDAO;@SuppressWarnings("unchecked")@Testpublic void testGetAllUsers() {//invocation.getArgument(1) 这里要注意,因为使用了2个参数,所以我们在Mock第2个参数代码块部分,索引下标是1//假如使用jdbcTemplate.query(sql, Object[], RowMapper),那么我们在mock -》 RowMapper时,就需要索引使用2:invocation.getArgument(2)//当然上面也要修改:jdbcTemplate.query(ArgumentMatchers.anyString(), (Object [])ArgumentMatchers.any(),ArgumentMatchers.any(RowMapper.class)))Mockito.when(jdbcTemplate.query(ArgumentMatchers.anyString(), ArgumentMatchers.any(RowMapper.class))).thenAnswer((invocation) -> {RowMapper<User> rowMapper = (RowMapper<User>) invocation.getArgument(1);ResultSet rs = Mockito.mock(ResultSet.class);// Mock ResultSet to return one rows.// Mockito.when(rs.getInt(ArgumentMatchers.eq("ID"))).thenReturn(506);// Mock ResultSet to return two rows.Mockito.when(rs.getInt(ArgumentMatchers.eq("ID"))).thenReturn(506, 400);Mockito.when(rs.getString(ArgumentMatchers.eq("NAME"))).thenReturn("Jim Carrey", "John Travolta");Mockito.when(rs.getBoolean(ArgumentMatchers.eq("STATUS"))).thenReturn(true, false);List<User> users = new ArrayList<>();users.add(rowMapper.mapRow(rs, 0));users.add(rowMapper.mapRow(rs, 1));return users;});List<User> users = userDAO.getAllUsers();// Assert First RowassertFirstUser(users.get(0));// Assert Second RowassertSecondUser(users.get(1));}public void assertFirstUser(User user) {Assert.assertEquals(Integer.valueOf(506), user.getId());Assert.assertEquals("Jim Carrey", user.getName());Assert.assertTrue(user.isStatus());}public void assertSecondUser(User user) {Assert.assertEquals(Integer.valueOf(400), user.getId());Assert.assertEquals("John Travolta", user.getName());Assert.assertFalse(user.isStatus());}
}
最后喜欢的小伙伴,记得关注收藏哦!
Spring JdbcTemplate RowMapper Junit Test Example相关推荐
- 【SSM框架系列】Spring - JdbcTemplate声明式事务
JdbcTemplate概述 以往使用jdbc时,每次都需要自己获取PreparedStatement,执行sql语句,关闭连接等操作.操作麻烦冗余,影响编码的效率. Spring把对数据库的操作在j ...
- Spring全家桶(九)Spring JdbcTemplate
一.Spring JDBC Spring JDBC是在JDBC API的基础上定义一个抽象层,用以简化JDBC操作.Spring JdbcTemplate是Spring JDBC框架的核心,为不同类型 ...
- Spring JdbcTemplate方法详解
2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...
- SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装
SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装 >>>>>>>& ...
- spring JdbcTemplate数据库查询实例
使用JdbcTemplate查询数据库的例子 配置等可以看前一篇文章: Spring JdbcTemplate实例 创建数据库 可以使用下面的SQL create table A( `id` INT ...
- Spring JdbcTemplate实例
简介 Spring JdbcTemplate类是Spring提供的简化数据库操作的一个类,这个类使用了模板方法模式,可以减少一些重复代码.这里主要演示一下 JdbcTemplate 的使用. 完整的代 ...
- Spring JdbcTemplate示例
Spring JdbcTemplate示例 Spring JdbcTemplate是Spring JDBC包中最重要的类. 目录[ 隐藏 ] 1 Spring JdbcTemplate 1.1 Spr ...
- 06_02_任务三:Spring JDBCTemplate 声明式事务
任务三:Spring JDBCTemplate & 声明式事务 课程任务主要内容: Spring的JdbcTemplate Spring的事务 Spring集成web环境 一 Spring的J ...
- Spring JdbcTemplate的queryForList(String sql , ClassT elementType)易错使用--转载
原文地址: http://blog.csdn.net/will_awoke/article/details/12617383 一直用ORM,今天用JdbcTemplate再次抑郁了一次. 首先看下这个 ...
最新文章
- Python零基础学习代码实践 —— 提取字符串里面的单词数
- SwfUpload及imgareaselect使用方法
- 运行Python程序的2种方式
- Flink x Zeppelin ,Hive Streaming 实战解析
- 判断一个图是否有环(有向图,无向图)
- Wireshark 的使用 —— 过滤器(filter)
- 深度学习样本标完后图片增强标签内容不变
- Android socketnetty实现
- 服务器系统打不上网卡驱动,服务器网卡驱动程序不能正确加载
- 科来过滤jd提示语法解析器错误的解决问题方法
- 采集插件,自动采集伪原创发布插件
- 如何使用u深度启动u盘清除系统登录密码
- CISSP-考纲分析
- java实现gdal栅格矢量化_gdal栅格矢量化 - osc_lfs4vsih的个人空间 - OSCHINA - 中文开源技术交流社区...
- 了解ZigBee以及硬件环境
- 学计算机要选什么科,计算机要学什么科目
- 2020CCPC绵阳站 D-Defuse the Bombs (二分答案)
- OpenWrt 系列教程汇总
- 苏州技师学院计算机专业怎么样,苏州技师学院口碑怎么样
- leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排