Liquibase не работает в Spring Integration Test с использованием Cucumber - PullRequest
0 голосов
/ 03 февраля 2020

Я работаю над приложением Spring и написал интеграционный тест с Cucumber (версия 1.2.5, старая, но я не могу его обновить сейчас):

@RunWith(Cucumber.class)
@CucumberOptions(
        plugin = {"pretty", "html:target/cucumber"},
        features = {"classpath:221.feature"},
        glue = {"org.bla.bla"}
)
public class RunCcTest {
}

Тогда у меня есть:

@SpringBootTest(classes = {MainApp.class, TestConfig.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles(profiles = {"bdd"})
@ContextConfiguration
@AutoConfigureDataJpa
@DirtiesContext
public abstract class CucumberStepDefinitions {
}

Абстрактный класс расширяется самим файлом шага:

@Slf4j
@Component
public class ServiceSteps extends CucumberStepDefinitions {...}

Я использую IntelliJ, и когда я запускаю тест, щелкая правой кнопкой мыши по RunCcTest.java, Spring запускается без проблем, в частности он запускает скрипты liquibase, которые я импортировал как зависимости в мой проект. Однако, когда я делаю чистую установку с maven, все тесты проваливаются, и не наблюдается никаких следов работы жидкой базы. Нет даже ошибки, он просто жалуется, что не может найти таблицу, что является нормальным явлением, поскольку скрипты ликвидазы не запускались.

Вот pom:

<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <scope>test</scope>
 </dependency>
 <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-java8</artifactId>
    <version>${cucumber.version}</version>
    <scope>test</scope>
 </dependency>
 <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>${cucumber.version}</version>
    <scope>test</scope>
  </dependency>
  <dependency>
     <groupId>info.cukes</groupId>
     <artifactId>cucumber-spring</artifactId>
     <version>${cucumber.version}</version>
     <scope>test</scope>
  </dependency>
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
  </dependency>
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
     <groupId>com.my.db</groupId>
     <artifactId>artifact-with.scripts</artifactId>
     <version>${project.version}</version>
  </dependency>

Файл свойств:

spring.datasource.url = jdbc:h2:mem:storm;Mode=Oracle;INIT=CREATE SCHEMA IF NOT EXISTS MY_SCHEMA\\;SET SCHEMA MY_SCHEMA
spring.datasource.username = sa
spring.datasource.password = sa

spring.jpa.hibernate.ddl-auto = none
spring.jpa.show-sql = false
spring.jpa.database-platform = org.hibernate.dialect.Oracle10gDialect

spring.h2.console.enabled = true

spring.liquibase.enabled=true
spring.liquibase.changeLog = classpath:/db/db.changelog.xml
spring.liquibase.checkChangeLogLocation = true
spring.liquibase.default-schema = MY_SCHEMA
spring.liquibase.contexts = init

spring.jpa.properties.hibernate.default_schema = MY_SCHEMA

Есть предложения о том, что мне не хватает?

...