Это очень похоже на случай [33213854]: Однако у меня есть..
@SpringBootApplication
@EntityScan(basePackages= "com.bla.bla")
@Import({RepositoryRestMvcConfiguration.class, PersistenceContext.class})
public class Main {..}
@Configuration
// Using.. application.yml -------
@ConfigurationProperties(prefix = "spring.datasource")
@EnableJpaRepositories(basePackages = {"com.aa.bb.repository"})
@EnableTransactionManagement
public class PersistenceContext extends HikariConfig {
@Bean(destroyMethod = "close")
public DataSource dataSource() throws SQLException {
return new HikariDataSource(this);
} ..
} ..
Источник данных Hikari не заполняется свойствами во время тестирования. Тест это..
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {PersistenceContext.class},
initializers = {ConfigFileApplicationContextInitializer.class})
public class MyIntegrationTests {
@Autowired
MyRepository repository;
@Test
public void findsSomethingIn() {
Page<ResourceBundle> bundles= this.repository.findAll(new PageRequest(0, 10));
assertThat(bundles.getTotalElements(), is(greaterThan(20L)));
}
}
Application.yml
spring:
datasource:
driverClassName: org.postgresql.Driver
jdbcUrl: jdbc:postgresql://localhost:5432/any
username: uid
password: xxx
Однако во время теста я получаю ..
IllegalArgumentException: требуется dataSource или dataSourceClassName или jdbcUrl. на com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:784)
Я был бы очень признателен за любой совет.
spring.datasource
— это пространство имен, которое мы уже связываем с чем-то совершенно другим, поэтому я бы не стал его использовать. Используйте собственное пространство имен. Меня смущает то, что вы пытаетесь сделать: если вы используете стандартное свойство Spring Boot, мы уже автоматически настраиваем hikari для вас. Почему вы определяете вещи, которые выполняются автоматически при загрузке? - person Stephane Nicoll   schedule 20.06.2016