美文网首页
Spring Boot使用嵌入式数据源做单测

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

作者: 孙汉_63f5 | 来源:发表于2018-04-18 20:40 被阅读0次

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

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

    二. 如何配置

            这里以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

    相关文章

      网友评论

          本文标题:Spring Boot使用嵌入式数据源做单测

          本文链接:https://www.haomeiwen.com/subject/lwemkftx.html