Проблема с dbUnit: java.sql.SQLException: закрытое заявление - PullRequest
0 голосов
/ 21 октября 2009

У меня странная проблема с 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 загружает данные теста из XML-файла в базу данных с помощью метода DatabaseOperation.REFRESH.execute dbUnit и используется во ВСЕХ тестах. Если я запускаю эти тесты с проблемами по отдельности, то проблем для них нет. Есть ли у вас какие-либо идеи? Спасибо!

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Когда это случилось со мной, мы явно сконфигурировали наш кэш соединений для снятия длительных соединений, используя два свойства:

AbandonedConnectionTimeout
InactivityTimeout

См. Документы Oracle по свойствам тайм-аута

Оказалось, что время запроса + обработки просто перепрыгивает через край двух объединенных свойств (AbandonedConnectionTimeout + InactivityTimeout <время запроса + время обработки набора результатов). </p>

Чтобы устранить эту проблему, вы можете либо увеличить лимиты тайм-аута, либо удалить его, установив для них значение 0 (по умолчанию)

1 голос
/ 21 октября 2009

Я предполагаю, что некоторые из ваших тестов закрывают соединение с базой данных, когда очищаются. Следующий тест снова пытается использовать это соединение для импорта и завершается неудачей.

...