我尝试使用 OpenEJB 测试基于 EJB 的存储库。每次运行新的单元测试时,我都希望我的数据库处于“初始”状态。测试后,所有更改都应回滚(无论测试是否成功)。如何以简单的方式完成它?我尝试使用 UserTransaction - 在测试开始时开始它并在完成时回滚更改(如下所示)。我不知道为什么,但是使用此代码,在执行回滚更改后,DB 中的所有更改(在单元测试期间完成)都将保留。正如我所写,我想以最简单的方式完成它,无需任何外部数据库模式等。
提前感谢您的任何提示!
彼得
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
}
}