2011-01-13 188 views
1

當我使用Maven運行一堆Selenium(jUnit4)測試後,我想要做一個數據庫清理(刪除它們插入的東西等)。這是一個在Tapestry/Spring/Hibernate上運行的舊項目和一個遺留數據庫。我想在@After註釋的方法中進行清理 - 但注入DAO/Managers/SessionFactory不起作用。測試如下:我在一個控制檯中運行(mvn jetty:run-war)應用程序,然後在另一個控制檯(mvn test)中啓動測試 - 它訪問localhost:8080上的應用程序。Selenium測試後的數據庫清理

+0

你可以看看這個問題:http://stackoverflow.com/questions/82949/before-and-after-suite-execution-hook-in-junit- 4-x – sblundy 2011-01-13 14:09:28

+0

您在尋找如何解決您的問題的提示:「但注入DAO/Managers/SessionFactory不起作用。」或者通過其他方式來設置和重置您的測試數據? – Ralph 2011-01-13 17:54:34

回答

6

幾種可能的方法:

  1. 使用dbunit,其目的是將數據庫恢復到測試之間一個已知的狀態。
  2. 使用try{} finally{}塊在數據庫事務中包裝每個測試,最終回滾事務。
  3. 嚴格使用數據庫進行測試,不用擔心。讓您的測試每次創建唯一標識/命名的值,這樣您就不會發生衝突,否則不會採取任何行動。
0

我寧願用

@Transactional

anotation上述方法的聲明。它在每次測試後都會運行回滾。這對我來說可以。

例如:

@Test 
@Transactional 
public void simpleTest(){  
    // your logic here  
}