0

我对 dbUnit 有一个奇怪的问题。我的项目使用 dbUnit 2.4.4、java 1.6、Spring(作为 db 连接池)、Oracle 9 进行了大约 50 个单元测试。对于其中一些(当我运行整套测试时)我得到这样的异常:

Closed Statement
[junit] junit.framework.AssertionFailedError: Closed Statement
[junit]     at com.myproj.DataAccess.Internal.BaseDAOTest.importToDb(Unknown Source)
[junit]     at com.myproj.DataAccess.Internal.MyDAOTest.testGetBuyClientOrders(Unknown Source)
[junit]     at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[junit]     at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
[junit]     at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)

importToDb 方法通过 dbUnit 的 DatabaseOperation.REFRESH.execute 方法将测试数据从 XML 文件加载到数据库,并用于所有测试。如果我单独运行这些有问题的测试,它们就没有问题。你有什么想法?谢谢!

4

2 回答 2

1

当这发生在我身上时,我们已经明确配置了我们的连接缓存以使用两个属性来狙击持久连接:

AbandonedConnectionTimeout
InactivityTimeout

请参阅此处有关超时属性的 Oracle 文档

事实证明,查询+处理时间只是跳跃了两个属性组合的风口浪尖(AbandonedConnectionTimeout + InactivityTimeout < 查询时间 + 结果集处理时间)。

要解决此问题,您可以提高超时限制,也可以通过将超时设置为 0(默认值)来删除超时

于 2011-05-27T12:40:44.430 回答
1

我猜你的一些测试在清理时会关闭数据库连接。下一个测试尝试再次使用此连接进行导入并失败。

于 2009-10-21T15:10:30.820 回答