gpt4 book ai didi

unit-testing - 使用 OpenEJB 进行 EJB 存储库测试 - 如何回滚更改

转载 作者:行者123 更新时间:2023-12-04 04:23:18 24 4
gpt4 key购买 nike

我尝试使用 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
}
}

最佳答案

3.1.4 的示例 zip 中有一个名为“transaction-rollback”的示例。

检查一下,因为它有多种方法可以在单元测试中回滚。其中一项技术包括为每个测试获取新的内存数据库的技巧。

关于unit-testing - 使用 OpenEJB 进行 EJB 存储库测试 - 如何回滚更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com