一、簡單介紹
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失敗;