2017-07-26 55 views
1

結束春季Junit的數據庫回滾我有很多現有的Spring JUnit測試。 所有這些測試都會擴展抽象測試類。 public class ServiceTest extends AbstractServiceTest { 但在這個抽象類,我們重新初始化數據庫。因此,這將重新初始化每個測試類在測試類

@Before 
@Override 
public void initGlobal() throws Exception { 
    initDatabase(); 
    ... } 

我問我怎麼能在它的測試執行結束時做回滾上一個測試類的數據庫?所以,我可以初始化數據庫,一個時間和回滾的變化在每一個測試類

+0

刪除操作後,任何人都無法恢復數據。反正你可以複製之前的表格做了手術,並保持清潔和原始表 –

回答

1

我認爲有兩個配置文件是用於測試和另一個用於開發和測試配置文件使用基於內存的數據庫就像H2上一個更好的選擇一個(here是一個很好的例子),並在你的發展概況使用您的主數據庫

當運行測試使用的測試profile.Instead做回滾或每次刪除數據的運行測試

如果你想使用在單元測試中真正的數據庫,我完全打消it.You可以使用Spring測試運行來註釋類和回滾事務

@RunWith(SpringJUnit4ClassRunner.class) 
@TransactionConfiguration(defaultRollback=true) 
public class YourTestClass { 

    @Test 
    @Transactional 
    public void myTestMethod() { 
     // db will get rolled back at the end of the test 
    } 
} 
+0

我運行專用於測試(PostgreSQL裏的)另一個數據庫的測試,測試,我們有相關的DBMS錯誤的案件。我有一個抽象類,在每個類中重新初始化這個測試數據庫(@Before)。它的工作原理,但測試需要很長的時間才能完成測試(因爲我們每次刪除DB和我們重新初始化)。所以我們的想法是使抽象類事務化,並在最終回滾更改而不重新初始化 –

+0

@YounessHARDI我更新了我的答案,我希望它可以幫助你 –