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,各种坑吧!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM