问题:我在测试类中的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默认是事物回滚的,这样测试的脏数据不影响数据库。具体看控制台输出也能看来:

SpringBoot使用Junit测试 防止事物自动回滚

 

所以这里为了验证测试方法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. }

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

SpringBoot使用Junit测试 防止事物自动回滚

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

SpringBoot使用Junit测试 防止事物自动回滚

原文地址:https://blog.csdn.net/PORSCHE_GT3RS/article/details/81417287

相关文章:

  • 2022-12-23
  • 2022-01-06
  • 2021-10-09
  • 2022-01-12
  • 2021-10-19
  • 2022-02-28
  • 2022-12-23
猜你喜欢
  • 2021-06-01
  • 2022-12-23
  • 2022-01-31
  • 2021-07-12
  • 2021-09-03
  • 2022-12-23
相关资源
相似解决方案