JUnit + DBUnit DBUnitTester导致锁定?

时间:2015-01-15 09:36:16

标签: java sql junit h2 dbunit

我在内存数据库中的H2中插入一些带dbunit的testdata,进行更新,并希望在测试运行后从db中删除testdata。

我的JUnit @Before setup

databaseTester.setSetUpOperation(DatabaseOperation.INSERT);
databaseTester.setDataSet(testDataSet);
databaseTester.onSetup();

在JUnit测试方法中我得到了类似的东西

String sql = "UPDATE table SET column='valuenew' WHERE column='valueold'"
SQLQuery query = sessionHandler.createSQLQuery(sql);
query.executeUpdate();

我的JUnit @After拆解

databaseTester.setDataSet(testDataSet);
DatabaseOperation tearDownOperation = DatabaseOperation.DELETE;
databaseTester.setTearDownOperation(tearDownOperation);
databaseTester.onTearDown();

我甚至不确定是否执行了更新,但我得到的第一个异常是调用onTearDown时。

Caused by: org.h2.jdbc.JdbcSQLException: Zeitüberschreitung beim Versuch die Tabelle "DT405" zu    sperren
Timeout trying to lock table "table"; SQL statement:
delete from PUBLIC.table where column = ? [50200-175]

好像桌子上已经有锁了。选择查询工作正常,但更新语句失败。

任何暗示出了什么问题?

相关: Timeout error trying to lock table in h2

更新: MVCC = true没有解决问题,我现在测试挂起的事务是否导致锁定

0 个答案:

没有答案