Я пытаюсь протестировать свои репозитории на основе EJB, используя OpenEJB.Каждый раз, когда запускается новый модульный тест, я бы хотел, чтобы моя БД находилась в «начальном» состоянии.После теста все изменения должны быть отменены (независимо от того, был ли тест пройден успешно или нет).Как это сделать простым способом?Я попытался использовать UserTransaction - начать его при запуске теста и откатить изменения при завершении (как вы можете видеть ниже).Я не знаю почему, но с этим кодом все изменения в БД (которые были сделаны во время модульного тестирования) остаются после того, как изменения строки были выполнены обратно.Как я уже писал, я хотел бы выполнить это самым простым способом, без какой-либо схемы внешней БД и так далее.
Заранее благодарим за любые подсказки!
Петр
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
}
}