У меня есть проект Spring Boot, использующий PostgreSQL.Я использую Spring Data и создаю CrudRepository
.Это прекрасно работает для приложения, так как я могу использовать автоматическую настройку, и все компоненты работают.Сейчас я пытаюсь написать интеграционные тесты с использованием Cucumber.Для своих тестов я хочу использовать Spring JPA для подключения к встроенной базе данных H2.Я создал DataSource
bean, а также интерфейс хранилища, который расширяет CrudRepository
.Когда тесты загружаются, оно выдает исключение в соответствии с:
Specified class is an interface
Я даже пытался сделать это вручную, создав LocalContainerEntityManagerFactoryBean
, но я столкнулся с этим исключением:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getEntityManagerFactory' defined in com.package.integration.repository.RepoConfig: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Мой ConfigLoaderStepDefs
@SpringBootTest(classes = [IntegrationTestConfig::class, JMeterRunner::class,
RepoConfig::class])
class ConfigLoaderStepDefs : StepDefs
Мой RepoConfig
@Configuration
@EnableJpaRepositories("<repo package>")
@EnableTransactionManagement
class RepoConfig {
@Bean
fun getEntityManagerFactory(): LocalContainerEntityManagerFactoryBean {
return LocalContainerEntityManagerFactoryBean().also { factory ->
factory.setPackagesToScan("<entities package>")
factory.jpaVendorAdapter = HibernateJpaVendorAdapter()
}
}
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
@Primary
fun getDataSource(): DataSource {
val dataSourceBuilder = DataSourceBuilder.create()
dataSourceBuilder.url("jdbc:h2:mem:memorydb")
.username("sa")
return dataSourceBuilder.build()
}
}
Мой CucumberIT
@Tag("it")
@RunWith(Cucumber::class)
@CucumberOptions(
plugin = ["html:build/reports/cucumber/cucumber-html-report",
"json:build/reports/cucumber/cucumber-json-report.json"],
features = ["classpath:features"],
glue = ["com.package.integration"])
@SpringBootTest
class CucumberIT
Кто-нибудь знает, кого настраиватьJPA хранилище при работе с огурцом?