Как настроить Spring Boot JPA для тестирования интеграции с огурцом? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть проект 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 хранилище при работе с огурцом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...