2011-04-04 33 views
3

我嘗試使用OpenEJB測試基於EJB的存儲庫。每次新單元測試運行時,我都希望我的數據庫處於「初始」狀態。測試結束後,所有更改都應回滾(無論測試是否成功)。如何以簡單的方式完成它?我嘗試使用UserTransaction - 在測試開始時開始並在完成時回滾更改(如下所示)。我不知道爲什麼,但是通過這段代碼,在執行完行換行後,所有DB中的更改(在單元測試期間完成)都會保留。 正如我寫的,我想以最簡單的方式完成它,沒有任何外部數據庫模式等。使用OpenEJB進行EJB存儲庫測試 - 如何回滾更改

在此先感謝您的任何提示!

彼得

public class MyRepositoryTest { 

    private Context initialContext; 

    private UserTransaction tx; 

    private MyRepository repository; //class under the test 

    @Before 
    public void setUp() throws Exception { 
     this.initialContext = OpenEjbContextFactory.getInitialContext(); 
     this.repository = (MyRepository) initialContext.lookup(
       "MyRepositoryLocal"); 
     TransactionManager tm = (TransactionManager) initialContext.lookup(
       "java:comp/TransactionManager"); 
     tx = new CoreUserTransaction(tm); 
     tx.begin(); 
    } 

    @After 
    public void tearDown() throws Exception { 
     tx.rollback(); 
     this.initialContext = null; 
    } 

    @Test 
    public void test() throws Exception {    
     // do some test stuff 
    } 
} 

回答

5

有一個稱爲「事務回滾」的例子郵政編碼爲3.1.4的例子。

檢查一下,因爲它有幾種方法在單元測試中回滾。其中一種技巧包括一個竅門,在每個測試中獲得一個新的內存數據庫。

+0

就是這樣!謝謝。 – 2011-04-06 20:41:17

相關問題