mybatis-spring-boot-test详解

一、简单介绍

mybatis-spring-boot-test是Mybatis提供的用于单元测试的一个小工具,类似于spring-boot-test中对JPA,Jdbc的支持,通过引入mybatis-spring-boot-test,我们可以很方便的测试我们的Mapper接口; 参考文档:【】

二、核心APi

    @MybatisTest:标明这是一个Mybatis单元测试;

三、示例

package com.firewolf.busi.example.springtest;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@MybatisTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class UserMapperTest {
          
   

    @Autowired
    private UserMapper userMapper;

    @Test
    void addUser() {
          
   
        int count1 = userMapper.selectCount(User.builder().account("mmmmm").build());
        userMapper.insertSelective(User.builder().account("mmmmm").build());
        int count2 = userMapper.selectCount(User.builder().account("mmmmm").build());
        Assertions.assertEquals(count1 + 1, count2);
    }

    @Test
    void selectUsers() {
          
   
        Assertions.assertDoesNotThrow(() -> userMapper.selectAll());
    }
}

四、高级功能

1. 查看操作结果

默认情况下,对数据库的更新操作在单元测试结束的时候,会被回滚,如果我们希望在数据库中能看到操作的结果,可以在方法或者类上上面加上注解:@Transactional(propagation = Propagation.NOT_SUPPORTED)。

2. 使用真实数据库

根据官方的指示,默认情况下,这些数据库的操作会使用内存数据库,如果想用真正的数据库,需要在类上面添加下面的代码:

@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)

然后,在我的测试过程中,都需要加上,否则会注入Mapper失败;

经验分享 程序员 微信小程序 职场和发展