zoukankan      html  css  js  c++  java
  • SpringBoot使用Junit测试 防止事物自动回滚

           问题:我在测试类中的save方法测试成功通过,但数据库没有插入数据

    测试方法如下:

    1. @Test
    2. @Transactional
    3. // @Rollback(false)
    4. public void saveOne(){
    5. ProductCategory productCategory = new ProductCategory();
    6. productCategory.setCategoryName("优惠单品");
    7. productCategory.setCategoryType(3);
    8. ProductCategory productCategory1 = productCategoryRepository.saveAndFlush(productCategory);
    9. log.info(productCategory1.toString());
    10. }

    执行测试方法后,数据库没有插入数据

    原因:springboot中使用junit编写单元测试,@Transactional默认是事物回滚的,这样测试的脏数据不影响数据库。具体看控制台输出也能看来:

    所以这里为了验证测试方法save是否正确应该关闭自动事物回滚,使用@Rollback(false)关闭回滚。

    1. @Test
    2. @Transactional
    3. @Rollback(false)
    4. public void saveOne(){
    5. ProductCategory productCategory = new ProductCategory();
    6. productCategory.setCategoryName("优惠单品");
    7. productCategory.setCategoryType(3);
    8. ProductCategory productCategory1 = productCategoryRepository.saveAndFlush(productCategory);
    9. log.info(productCategory1.toString());
    10. }

    运行测试方法,控制台输出如下:

    数据库也插入了对应的数据。最后吐槽一下,Spring Data JPA这破玩意真不好用,底层还是Hibernate,各种坑吧!

    原文地址:https://blog.csdn.net/PORSCHE_GT3RS/article/details/81417287
  • 相关阅读:
    js计算器
    还差得远
    首个项目结束
    Web前端开发规范文档你需要知道的事
    CSS需要经过多次练习和积累才能掌握
    在Javascript中闭包(Closure)
    Web前端和网站美工
    IE中的条件注释
    计算机类期刊投稿
    忙就一个字
  • 原文地址:https://www.cnblogs.com/jpfss/p/10956525.html
Copyright © 2011-2022 走看看