Как указать в Spring Boot тестах источник конфигурации?
Прошу помощи.
Пытаюсь запустить тест для методов класса. В начале теста стоит аннотация: @JdbcTest. Имеется файл конфигурации JdbcTemplateConfiguration в структуре main. В конфигурации указаны bean:
@Bean
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName(driverClassName);
dataSourceBuilder.url(url);
dataSourceBuilder.username(username);
dataSourceBuilder.password(password);
return dataSourceBuilder.build();
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
После запуска теста, запускается контекст Spring. И у меня такое впечатление, после выполнения в режиме debug, что к моему контексту JdbcTemplateConfiguration Spring вовсе не обращается. Т.к dataSource={SimpleDriverDataSource@5271}, а вроде жду DataSourceBuilder. То есть запускается своя, наверно стандартная конфигурация, а не моя, где указана моя база данных в DataSource. Так же во время выполнения в режиме debug, когда тест доходит вот до этого метода:
public List<Bid> getUserBids(long id) {
String sqlGetUserBids = "SELECT bids.bid_value FROM bids WHERE user_id=" + id;
return jdbcTemplate.query(sqlGetUserBids, new BidMapper());
}
выдаёт ошибку, что jdbcTemplate не найден. Хотя в конфигурации я его прописывал.
Вопрос такой, как указать тесту (или правильнее будет сказать Spring), что конфигурацию брать мою, конкретную, а именно: JdbcTemplateConfiguration? И чтоб он загрузил все указанные в конфигурации bean.
Что пробовал сделать. Пытался под аннотацией @JdbcTest указать
@ContextConfiguration(classes = { JdbcTemplateConfiguration.class })
Не помогло.
Пытался к bean DataSource поставить аннотацию @Primary. Не помогло.
Пытался использовать @SpringBootTest, также пытался использовать
@SpringBootTest(classes = { JdbcTemplateConfiguration.class })
вместо @JdbcTest. Тут уже несколько интереснее. Bean DataSource считывается, вижу что данные считались из application.properties. Но jdbcTemplate также не найден.
Дополнение.
В классе конфигурации стоят аннотации:
@Configuration
@ComponentScan(basePackages = "...")
@PropertySource("classpath:application.properties")
Зависимости в pom.xml:
spring-boot-starter-data-jdbc
spring-boot-starter-web
h2 runtime
lombok
spring-boot-starter-test test
junit-jupiter-engine test
Заранее благодарен за любые ответы.