单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。本文将对前面开发的MyBatis示例项目进行单元测试。
Spring Boot整合MyBatis持久层框架-MyBatis简介和创建示例项目(1)
Spring Boot整合MyBatis持久层框架-XML映射和Mapper接口开发(2)
IntelliJ IDEA 推荐安装MyBatis 插件 Free MyBatis plugin
一、单元测试依赖项
通过spring initialize创建的Spring Boot项目会在Maven中自动添加很多starter依赖项,如图所示:
其中包含了一个名为spring-boot-starter-test的依赖,在Spring Boot中引入单元测试很简单,添加如下依赖(即spring-boot-starter-test依赖):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
二、使用@MapperScan注解
使用@MapperScan来完成映射器的注入。在Application主启动类上加上@MapperScan(“Mapper接口所在路径")即可完成MyBatis的初始化。
@SpringBootApplication
@MapperScan("com.rickie.dao")
public class MybatisApp {
public static void main(String[] args) {
SpringApplication.run(MybatisApp.class, args);
}
}
@MapperScan("com.rickie.dao")主要做了两件事情:
1. 根据com.rickie.dao配置进行mapper接口扫描;
2. 为扫描到的接口进行BeanDefinition注册到Spring容器中;
当开发的工程中使用了某个Dao时,Spring能够从容器中找到这个Dao对应的BeanDefinition,将其实例化并且注入,这样开发者就可以使用了,这也是为何我们在示例项目中只定义了Dao的接口,但是工程运行时能够有实例Bean的原因。
三、编写单元测试方法
编写单元测试,验证前面完成的mapper接口、XML映射文件。
@SpringBootTest
public class TestPerson {
@Autowired
private PersonDao personDao;
@Test
public void testGetPerson() {
System.out.println(personDao);
Person person = personDao.findbyName("tom");
System.out.println(person.toString());
}
@Test
public void testInsertPerson() {
Person person = new Person();
person.setAge(18);
person.setName("bill");
int result = personDao.insert(person);
System.out.println(result);
}
@Test
public void testGetAll() {
List<Person> personList = personDao.getAll();
for (Person p: personList) {
System.out.println(p.toString());
}
}
}
运行单元测试,输出结果如下所示,上述测试方法都验证通过了。