美文网首页
2023-10-27 如何让springTest里的Transa

2023-10-27 如何让springTest里的Transa

作者: 人人为它 | 来源:发表于2023-10-26 09:33 被阅读0次

    在junit里用过Transactional 注解的小伙伴肯定是发现的.无论你出不出错.他都是回滚的.

    可能这能满足大部分小伙伴的需求.但是对于我他.有点满足不了..因为我是拿测试用例来造数据的...

    而且没有事务..每次要是新业务,,插入到一半出了个错..删除脏数据也得删半天.等等情况..

    那么我就想.能不能让测试用例的Transactional也和业务一样呢..

    瞄了一眼.spring怎么干的

    spring测试用例跑之前会有一堆TestExecutionListener的实现会跑

    其中处理事务相关的就是TransactionalTestExecutionListener

    看了眼他的代码发现

    他是用TransactionContext类把事务相关的包起来了.然后构造的时候传入isRollBack.简单粗暴的来决定是不是要回滚.

    那其实问题就简单了.不用他这个事务管理器不就完事.自己写一个.

    核心代码如下

    NeedBusinessTransactional 这个注解是为了区别.到底是不是要用业务事务..毕竟..有的人就喜欢他默认实现..改默认实现我个人认为是不好的.

    起码是要加个条件..

    然后在注解类上加上

    @TestExecutionListeners(value = ReplaceTransExecutionListener.class,mergeMode =

    TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)

    把自己的listener加到默认的listener之中就可以了.

    只要这样就可以让事务注解的效果和业务中一样了.

    相关文章

      网友评论

          本文标题:2023-10-27 如何让springTest里的Transa

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