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
  • 相关阅读:
    linux文件系统初探--Day2(3)
    linux文件系统初探--Day2(2)
    linux文件系统初探--Day2(1)
    linux文件系统初探--Day1
    LKD-虚拟文件系统
    linux-nova 安装
    per-file DAX 工作日志(2)
    linux 内核设计与实现——进程管理
    关于用户与服务端密码的校验问题 !mysql php
    [Err] 1055
  • 原文地址:https://www.cnblogs.com/jpfss/p/10956525.html
Copyright © 2011-2022 走看看