Я использую h2 встроенную базу данных, которая определяется так:пружинных тестов закрытие встроенных баз несколько раз
<jdbc:embedded-database id="embeddedDatasource" type="h2"/>
И у меня есть два теста:
@RunWith(SpringJunit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("classpath:h2-context.xml")
class Test1 {...}
@RunWith(SpringJunit4ClassRunner.class)
@ContextConfiguration("classpath:h2-context.xml")
class Test2 {...}
После выполнения всех тестов я видит в журнале:
* Closing org.springframework.context.support.GenericApplicationContext
* Closing org.springframework.web.context.support.GenericWebApplicationContext
* Closing JPA EntitiManagerFactory for Persistance unit ...
* Closing JPA EntitiManagerFactory for Persistance unit ...
Таким образом, диспетчер объектов закрыт для каждого контекста после выполнения всех тестов. Я знаю, что весна кэширует файлы контекста, поэтому я предполагаю, что h2 bean используется для двух тестов.
Проблема заключается в: иногда я получаю странные исключения, как:
H2EmbeddedDatabaseConfigurer: Could not shutdown embedded database
jrg.h2.jdbc.JDBCSQLException: The database has been closed [90098-179]
Как я могу исправить это?
Это то, что я нашел до сих пор: Spring’s embedded H2 datasource and DB_CLOSE_ON_EXIT
вы пытались DB_CLOSE_ON_EXIT? Такая же ошибка? – ikumen
Нет, я этого не делал, и на самом деле это специфично, интересно, какой общий способ решения проблемы. Благодарю. –
Какую версию 'spring-jdbc' (т. Е. Spring Framework в целом) вы используете? –