2016-09-26 29 views
0

在我的Spring項目中,我使用JUnit4運行某些測試用例。我使用@Transactional刪除在測試用例期間對數據庫所做的任何更改,以便新的測試用例獲得相同的初始數據庫狀態。問題在於,在我的一個測試用例中,我在數據庫中插入了一些值,然後在相同的測試中再次使用它們。它看起來像@Transactional即使在測試用例完成之前也會刪除條目,因此我的測試無法按預期運行。我該如何解決這個問題?JUnit4:@Transactional即使在測試用例完成之前也會刪除數據

它是這樣的

@Test() 
@Transactional 
    // Add entries to db and do some asserts 

    // Use those entries to do some more asserts 
} 

怎麼把條目都不見了第二部分不起作用。有人可以請幫助。提前致謝 !!

+0

你嘗試調試的問題?你確定事務在方法返回之前回滾?有沒有可能你自己的方法之一叫做刪除? – TheLostMind

+0

根據你的代碼,這似乎與'@ Transactional'無關' – passion

+0

@TheLostMind我試圖單獨運行測試用例,沒有使用事務註釋,測試用例按預期運行。我不會包含Transactional,但是班上還有其他的測試用例會受到影響。我不認爲我的任何方法都稱爲刪除,因爲在那種情況下,如果沒有Transactional,它也不起作用。謝謝 !! – varunkr

回答

1

你只能這樣做的測試代碼,而不是在生產代碼

這通常不是手動操縱交易是個好主意,但它應該是罰款一試,你只需要做到這一點:

@Test() 
@Transactional 
    // Add entries to db and do some asserts 
    sessionFactory.getCurrentSession().flush() 
    sessionFactory.getCurrentSession().clear() 
    // Use those entries to do some more asserts 
} 

的方法可以是不同的..但是你可以看到這個想法..

相關問題