我们正在迁移到 Spring Batch 5 和 Spring Boot 3.2.2。 由于 Spring Batch 不创建表,我们现有的 Cucumber(BDD) 测试用例失败 出现以下错误: org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到表“BATCH_JOB_INSTANCE”; SQL语句
我们是否需要在触发 Cucumber 测试用例时手动创建 Spring Batch 核心表,或者可以进行任何配置来在 Cucumber 配置中创建这些表来生成这些表..?
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 {
}