Сценарии начальной настройки H2 DB в JUNIT вызываются несколько раз - PullRequest
0 голосов
/ 22 апреля 2020

Пытаюсь написать контрольные примеры JUNIT с H2 DB для моих микросервисов. У меня есть несколько. sql файлов для начальной настройки БД, например, для создания схемы, таблиц и т. Д. c. Здесь возникает одна проблема: файлы. sql вызывают несколько раз, по одному разу на каждый тестовый файл JUNIT. Есть ли способ справиться с этим сценарием? Мой файл установки БД выглядит так -

@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;
.....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...