Я работаю над приложением 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
Есть предложения о том, что мне не хватает?