Springboot优雅单元测试之mapper的测试(基于mybatis-plus)

这篇具有很好参考价值的文章主要介绍了Springboot优雅单元测试之mapper的测试(基于mybatis-plus)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于springboot的工程,正常单元测试,可以利用IDEA的goto功能自动生成对应的测试类(测试方法),然后在生成的测试类加注解@SpringBootTest,执行对应的test方法即可。但是这样默认是会启动整个springboot应用的,如果有web,还会启动web容器。这个时间比较久,不够优雅

Mapper层的单测

直接撸代码~

1、test类

package com.test.junit.mapper;

import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import com.test.junit.entity.UserInfo;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.util.CollectionUtils;

import javax.sql.DataSource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
主要是这里的代码:
@SpringBootTest注解里面的classes可以定义只想加载的bean类,
比如此处只需要测试mybatis-plus的mapper接口,那么需要用到的类配置进来即可,
这样就不会加载controller层、service层等没用到的资源。
*/
@SpringBootTest(
        classes = {
                IUserInfoMapper.class,
                DataSourceAutoConfiguration.class,
                MybatisPlusAutoConfiguration.class,
                DataSource.class,
                SqlSessionFactory.class
        }
)
@MapperScan(basePackages = "com.test.junit.mapper")
class IUserInfoMapperTest {

    @Autowired
    private IUserInfoMapper userInfoMapper;

    @Test
    public void testSelectUser(){
        Map<String, Object> map = new HashMap<>();
        map.put("name", "asdfa");
        List<UserInfo> userInfos = userInfoMapper.selectByMap(map);
        Assertions.assertTrue(!CollectionUtils.isEmpty(userInfos));
    }
}

2、启动配置文件

对应的application.yml配置文件:文章来源地址https://www.toymoban.com/news/detail-508706.html

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/my_test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456

3、pom.xml依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.2</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>rank-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.4.1</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>com.github.jsonzou</groupId>
			<artifactId>jmockdata</artifactId>
			<version>4.3.0</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
			<version>3.22.0</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<version>4.3.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-inline</artifactId>
			<version>4.3.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>ch.qos.logback</groupId>
				<artifactId>logback-classic</artifactId>
				<version>1.2.11</version>
			</dependency>
			<dependency>
				<groupId>ch.qos.logback</groupId>
				<artifactId>logback-core</artifactId>
				<version>1.2.11</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>1.7.36</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

到了这里,关于Springboot优雅单元测试之mapper的测试(基于mybatis-plus)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 针对mockito框架在单元测试中出现Mybatis-Plus链式调用的解决方案

    1、 调用其他service层方法 2、 调用本service层方法 3、其他问题

    2024年01月24日
    浏览(33)
  • 请给 SpringBoot 写一个优雅的单元测试吧?

    当一个测试满足下面任意一点时,测试就不是单元测试 (by Michael Feathers in 2005): 与数据库交流 与网络交流 与文件系统交流 不能与其他单元测试在同一时间运行 不得不为运行它而作一些特别的事 如果一个测试做了上面的任何一条,那么它就是一个集成测试。 这是一个单元测

    2024年02月17日
    浏览(28)
  • Mybatis-Plus 自定义mapper批量新增修改函数

    version MybatisPlusConfig CustomizedSqlInjector InsertBatchMethod UpdateBatchMethod RootMapper 使用方式 mapper接口实现自定义的RootMapper,即可调用批量新增修改函数

    2024年02月12日
    浏览(38)
  • junit单元测试 mybatis 单独测试 springboot

    目录 省流: 正文 一、直接测(无需配置扫描和xml) 1. 场景 2. 无需配置扫描,直接在测试类注入Mapper 3. 报错 补充: 关于@RunWith 常见的报错: 1.包名不同导致报错 test目录下配置文件:application.yml中配置数据库信息。 test目录下各类:直接写测试类即可,直接调用main目录下各

    2024年02月07日
    浏览(40)
  • 【 SpringBoot单元测试 和 Mybatis 增,删,改 操作 】

    单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。 在Java中单元测试的最小单元是类 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。执行单元测试,就是为了证明这段代码的行为和我们期望是否一致

    2023年04月23日
    浏览(22)
  • 基于springboot+mybatis-plus+mysql+vue音乐网站管理系统

    音乐播放 用户登录注册 用户信息编辑、头像修改 歌曲、歌单搜索 歌单打分 歌单、歌曲评论 歌单列表、歌手列表分页显示 歌词同步显示 音乐收藏、下载、拖动控制、音量控制 后台对用户、歌曲、歌手、歌单信息的管理 开发工具:IDEA /ECLIPSE 数据库:MYSQL5.7以上 JAVA: JDK1.8

    2024年02月13日
    浏览(37)
  • 解密Mybatis-Plus:优雅简化你的数据访问层!

    目录 1、引言 2、什么是Mybatis-Plus 3、Mybatis-Plus的特点和优势 4、安装和配置Mybatis-Plus

    2024年01月21日
    浏览(27)
  • SpringBoot -02 SpringBoot整合Mybatis、Druid数据源、单元测试、JSP

    mybatis起步依赖 mysql启动依赖 数据源配置 mybatis相关配置 加载mybatis配置文件 mybatis别名配置 日志配置 加载mapper映射文件配置文件 http://localhost:8080/users Druid连接池后台监控:http://localhost:8080/druid/index.html SpringBoot对JSP的支持不是很友好,所以JSP很少被使用 springboot 不支持jsp 但是

    2024年02月06日
    浏览(79)
  • MyBatis-plus中的两种快捷操作数据库方式:1、mapper调用 2、ActiveRecord方式(简称AR) 二者的使用和区别介绍

            在使用MyBatis操作数据库时,需要频繁的写mapper层dao接口以及对应的配置文件和SQL语句,当功能方法繁杂,业务逻辑不复杂的时候,我们可以使用MyBatis的升级版MyBatis-Plus来代替我们写这些繁琐的配置文件和简单的SQL。 (1)书写或使用MP生成数据库表对应的实体类。

    2024年02月07日
    浏览(33)
  • (MVC)SpringBoot+Mybatis+Mapper.xml

    前言:本篇博客主要对MVC架构、Mybatis工程加深下理解,前面写过一篇博客:SprintBoot+html/css/js+mybatis的demo,里面涉及到了Mybatis的应用,此篇博客主要介绍一种将sql语句写到了配置文件里的方法,即Mybatis里Mapper.xml文件配置,其主要用于定义sql语句和映射关系 目录 MVC架构流程图

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包