单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写好数据库单测。
为什么要写数据库单测? 相信大家是不是有这样类似的经历,在写完复杂的sql语句后,自信满满的提测,发现很大一部分Bug都是因为sql语句出现问题了,要么少写逗号,要么漏了字段,悔不当初哇,为啥写完不多测测呢!
没关系!这就教你如何写数据库单测,让你轻松告别数据库相关bug。
1. 数据库样例和环境
我们以用户表为例开启本次教程:
图1.1 用户表ER图
引入mybatis-plus插件后,mapper类如下:
@Mapper
public interface UserMapper extends BaseMapper {
}
整体环境:
spring boot: 1.5.18.RELEASE
mybatis: 3.5.1
mybatis plus:3.4.0(此时最新版本,我们会用到最新版本的特性)
在这里我们直接测试的是mybatis plus提供的一些CRUD,当然这些CRUD一般都不会错,实际项目中我们只需对自定义的SQL进行单元测试即可。
2. 方式一:启动整个环境
这种方式应该是日常环境使用最多的,利用SpringBoot自1.4.0版本开始引入的@SpringBootTest注解可以启动我们单元测试所需要的所有环境,当然,如果你项目中运用了其他分布式服务,他同样也会启动这些服务。单测代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
public v