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