gpt4 book ai didi

spring-batch - 运行 Spring Batch 测试,不初始化数据库

转载 作者:行者123 更新时间:2023-12-04 13:41:45 26 4
gpt4 key购买 nike

尝试为 spring 批处理应用程序创建一些端到端测试,效果很好。我收到一个 sql 错误,因为它没有初始化 Spring Batch 处理表:org.postgresql.util.PSQLException: ERROR: relation "batch_job_instance" does not exist
我在 src/test/resources/application.properties 中有此代码:

spring.datasource.initialize=true
spring.datasource.initialization-mode=always
spring.datasource.platform=postgresql

spring.batch.initialize-schema=always

这与我对 `src/main/resources/application.properties 和作品的看法相同。

这是我的代码 ApplicationTest :

@RunWith(SpringRunner.class)
@ContextConfiguration(classes={
TestConfiguration.class,
JobCompletionNotificationListener.class,
BatchConfiguration.class
})
@SpringBatchTest
public class ApplicationTests {

@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;


@Test
public void testJob() throws Exception {
JobExecution jobExecution = jobLauncherTestUtils.launchJob();
}
}

我有一个特定的 TestConfiguration生成 BeanDataSource .

@Configuration
@PropertySource("application.properties")
public class TestConfiguration {

@Autowired
private Environment env;

@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getProperty("spring.datasource.driverClassname"));
dataSource.setUrl(env.getProperty("spring.datasource.url"));
dataSource.setUsername(env.getProperty("spring.datasource.username"));
dataSource.setPassword(env.getProperty("spring.datasource.password"));

return dataSource;

}

我期待创建所有表(内部批处理表和在 schema-all.sql 中定义的表)。

但我收到以下错误 org.postgresql.util.PSQLException: ERROR: relation "batch_job_instance" does not exist .

我不明白为什么在主应用程序中所有的工作都是自动的,而在测试中却没有。

最佳答案

如果 Spring 测试未命中,则会错过 BatchDataSourceInitializer在实际应用中由 Spring Boot 自动配置,你不想写一个完整的 @SpringBootTest ,您可以通过添加注解来选择性地为 Spring Batch 添加自动配置

@ImportAutoConfiguration(BatchAutoConfiguration.class)
这将为注入(inject)的 DataSource 提供初始值设定项。 .

关于spring-batch - 运行 Spring Batch 测试,不初始化数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56047243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com