Spring Batch 5 和 Cucumber(BDD) 集成

问题描述 投票:0回答:1

我们正在迁移到 Spring Batch 5 和 Spring Boot 3.2.2。 由于 Spring Batch 不创建表,我们现有的 Cucumber(BDD) 测试用例失败 出现以下错误: org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到表“BATCH_JOB_INSTANCE”; SQL语句

我们是否需要在触发 Cucumber 测试用例时手动创建 Spring Batch 核心表,或者可以进行任何配置来在 Cucumber 配置中创建这些表来生成这些表..?

spring-boot cucumber spring-batch
1个回答
0
投票

您没有详细提及您的堆栈。但是假设您正在使用

cucumber-spring
@BeforeAll
钩子将无法工作,因为它会在 Spring 开始之前触发。

您可以使用 Spring 来执行此操作。例如,使用

src/test/java
文件夹中的事件侦听器。

@Component
class PrepareDatabase{

    @EventListener(ContextRefreshedEvent.class)
    public void contextRefreshedEvent() {
        //do sql stuff
    }
}

这与使用 Flyway 或 Liquibase 等工具相当。所以你可能想使用它而不是自己滚动。

或者,如果您需要在场景之前或之后执行操作,请查看测试执行侦听器

要将这些从 Cucumber 传递到 spring,您可以使用

@CucumberContextConfiguration
注释。

@CucumberContextConfiguration
@TestExecutionListeners(...your test execution listeners)
@SpringBootTest(classes = TestConfig.class)
public class CucumberSpringConfiguration {

}
© www.soinside.com 2019 - 2024. All rights reserved.