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失敗;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章