Я использую базу данных H2 для своего тестирования JUnit и получаю эту ошибку в своих тестовых примерах JUNIT -
INFO [extShutdownHook] osjdeH2EmbeddedDatabaseConfigurer osjdeAbstractEmbeddedDatabaseConfigurer.shutdown (AbstractEmbeddedDatabaseConfigurer. * 53 | ||||||||||||| - | Не удалось завершить работу встроенной базы данных: org.h2.jdb c .JdbcSQLNonTransientConnectionException: база данных открыта в монопольном режиме; не могу открыть дополнительные соединения [90135-200]
Мой файл настройки БД выглядит так -
@Configuration
@ComponentScan(basePackages={"com.sample.repository"})
public class SampleDBConfig {
JdbcTemplate jdbcTemplate = null;
DataSource dataSource = null;
@Bean
public JdbcTemplate jdbcTemplate()
{
if(jdbcTemplate == null){
LOGGER.info("JdbcTemplate is null, so calling to create ");
jdbcTemplate = new JdbcTemplate(getDataSource());
}else{
LOGGER.info("JdbcTemplate is already set");
}
return jdbcTemplate;
}
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
DataSource getDataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
if(dataSource == null){
dataSource = builder
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:folder/initial-setup.sql")
.build();
}
return dataSource;
}
}
Один из моих тестовых классов JUNIT выглядит так -
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SampleDBConfig.class)
public class XyxImplTest{
@Autowired
ClassInTestImpl classInTestImpl ;
@Test
public void testMethod(){
.......
}
}
И один из классов, которые я тестирую, выглядит следующим образом -
@Component
@Transactional(rollbackFor = Exception.class)
public class ClassInTestImpl implements ClassInTest {
@Autowired
private JdbcTemplate jdbcTemplate;
.....
Я использую SpringJUnit4ClassRunner.class для своих тестов JUNIT и вызываю этот класс настройки БД из каждого тестового класса JUNIT с помощью @ContextConfiguration (классы = SampleDBConfig.class). Я не хочу выполнять тесты JUNIT последовательно, есть ли способ решить эту проблему?