Spring Boot使用嵌入式数据源做单测

2018-04-18  本文已影响0人  孙汉_63f5

一. 为什么要用嵌入式数据源做单测

        嵌入式数据源作为应用的一部分运行,非常适合在开发和测试环境中使用,因为在使用嵌入式数据源的情况下,你可以在每次应用启动或者每次运行单元测试之前初始化测试数据。这样就可以避免开发库或者测试库因为垃圾数据等带来的问题。

二. 如何配置

        这里以Spring Boot整合Mybatis为例,嵌入式数据源使用H2,配置类代码如下:

图2 图3 application.properties

这里TransactionTemplate是实现编程式事务;声明式事务直接使用@Transactional注解;【如果是多数据源,使用@Transactional时需要指定对应的事务管理器】

三. 单测规范

        1. 每个test之间在数据上最好不要相互依赖【即:一个test中insert数据,另一个test中不能被select出来】

        2. test的执行顺序可以是任意的

        3. 单测的覆盖率越高越好(企业会要求到达 70%以上)

四. 如何实现规范

        要达到上述的规范,我们要做的就是在test执行之后,执行rollback即可,这样当前test产生的数据,就不会被写到H2的表里。

        spring-test模块中有一个类TransactionalTestExecutionListener,其中afterTestMethod会在test执行之后执行,如果开启了事务,则会调用TransactionContext类的endTransaction方法,endTransaction里会判断是否需要rollback,默认是true。

        所以我们只需要在单测类或者单测方法上使用@Transactional声明事务即可,源码如下:

@Transactional("testTransactionManager")

【Spring Boot默认支持事务,所以无需显式使@EnableTransactionManagement注解】

TransactionalTestExecutionListener.afterTestMethod TransactionContext.endTransaction 默认的参数

五. 如何在Spring Boot中整合Mybatis多数据源

请参数https://blog.csdn.net/mxw2552261/article/details/78640062

上一篇下一篇

猜你喜欢

热点阅读