美文网首页
MyBatis Plus单元测试

MyBatis Plus单元测试

作者: 程序员小白成长记 | 来源:发表于2023-04-16 14:54 被阅读0次

    Background

    在测试过程中,有时候只想测试数据库语句是否正确,不想测试业务代码,所以只想加载数据库相关的配置,@SpringBootTest注解会加载全部的上下文配置,有的时候本地并不具备这些环境。

    JPA,Mybatis,Mybatis都提供了只加载数据库相关配置的注解

    image.png

    Demo

    User 实体类

    package com.user.domain;
    
    
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.AccessLevel;
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor(access = AccessLevel.PRIVATE)
    @TableName("user")
    public class User {
    
        /**
         * id
         */
        @TableId
        private Long id;
    
        /**
         * user id
         */
        private Long userId;
    }
    

    mapper 类

    public interface UserMapper extends BaseMapper<User> {
    }
    

    启动类

    @MapperScan("com.user")
    public class UnitTestApplication {
        public static void main(String[] args) {
            try {
                SpringApplication.run(UnitTestApplication.class, args);
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }
    

    Unit Test

    package com.user.dao.mapper
    
    import com.baomidou.mybatisplus.test.autoconfigure.MybatisPlusTest
    import org.springframework.beans.factory.annotation.Autowired
    import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
    import spock.lang.Specification
    
    // @Ignore
    @MybatisPlusTest
    @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
    class UserMapperTest extends Specification {
    
    
        @Autowired
        UserMapper UserMapper
    
        def "get use by user id"() {
            given:
            def id = 5
    
            when:
            def result = UserMapper.selectById(5)
    
            then:
            result
        }
    }
    

    pom

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.2</version>
    </dependency>
    
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter-test</artifactId>
        <version>3.5.2</version>
    </dependency>
    

    application.yaml

    spring:
      application:
        name: user
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://mysql-user:3306/user?characterEncoding=UTF-8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&useSSL=false&allowMultiQueries=true&serverTimeZone=GMT%2B8
        username: root
        password: root
    

    Ref

    [1] springboot新版单元测试(很全,含旧版): https://zhuanlan.zhihu.com/p/551582501

    相关文章

      网友评论

          本文标题:MyBatis Plus单元测试

          本文链接:https://www.haomeiwen.com/subject/vmgfjdtx.html