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

2023-02-12,,,

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

测试方法如下:


    @Test @Transactional // @Rollback(false) public void saveOne(){ ProductCategory productCategory = new ProductCategory(); productCategory.setCategoryName("优惠单品"); productCategory.setCategoryType(3); ProductCategory productCategory1 = productCategoryRepository.saveAndFlush(productCategory); log.info(productCategory1.toString()); }

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

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

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


    @Test @Transactional @Rollback(false) public void saveOne(){ ProductCategory productCategory = new ProductCategory(); productCategory.setCategoryName("优惠单品"); productCategory.setCategoryType(3); ProductCategory productCategory1 = productCategoryRepository.saveAndFlush(productCategory); log.info(productCategory1.toString()); }

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

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

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

SpringBoot使用Junit测试 防止事物自动回滚的相关教程结束。

《SpringBoot使用Junit测试 防止事物自动回滚.doc》

下载本文的Word格式文档,以方便收藏与打印。