gpt4 book ai didi

java - 动态创建作业的 Spring 批量测试

转载 作者:行者123 更新时间:2023-12-01 16:32:51 27 4
gpt4 key购买 nike

在我的应用程序中,我有多个作业,因此我创建了动态作业。运行此应用程序没有任何问题。我想对动态创建的作业进行单元测试。

我想将我的作业设置为 JobLauncherTestUtils 。

@RunWith(SpringRunner.class)
@SpringBatchTest()
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class })
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
@PropertySource("classpath:application.yml")
public class SpringBatchIntegrationTest {
@Inject
private JobRepository jobRepository;
@Inject
private JobLauncher mJobLauncher;
private JobLauncherTestUtils jobLauncherTestUtils;
@Inject
BatchJobConfig mBatchJobConfig;
public void initailizeJobLauncherTestUtils() {
jobLauncherTestUtils = new JobLauncherTestUtils();
jobLauncherTestUtils.setJobRepository(jobRepository);
jobLauncherTestUtils.setJob(mBatchJobConfig.createJob());
jobLauncherTestUtils.setJobLauncher(mJobLauncher);
}

这就是我初始化 JobLauncherTestUtils 的方式。当我运行这个时,我收到以下错误创建名为“jobLauncherTestUtils”的 bean 时出错:通过方法“setJob”参数 0 表达的依赖关系不满足;谁能告诉我如何对动态作业进行 Spring 批量测试。我对Junit了解不多。我刚刚开始学习

最佳答案

@SpringBatchTest 已在您的测试上下文中添加了一个 JobLauncherTestUtils 类型的 bean(请参阅 Javadoc ),因此您无需自行添加。

但是,JobLauncherTestUtils 需要一个作业 bean,而您的测试上下文中似乎没有定义该作业 bean。您可以做的是在配置类中定义一个并将其导入到您的测试上下文中,例如:

@RunWith(SpringRunner.class)
@SpringBatchTest
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class })
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
@PropertySource("classpath:application.yml")
@ContextConfiguration
public class SpringBatchIntegrationTest {
@Inject
private JobRepository jobRepository;
@Inject
private JobLauncher mJobLauncher;
@Inject
private JobLauncherTestUtils jobLauncherTestUtils;

// No need for initailizeJobLauncherTestUtils

// Add your test method

@Configuration
@Import(BatchJobConfig.class) // you might need this or not depending on what's defined in BatchJobConfig
static class MyJobConfiguration {

@Bean
public Job job(BatchJobConfig mBatchJobConfig) {
return mBatchJobConfig.createJob();
}

}

}

关于java - 动态创建作业的 Spring 批量测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62015497/

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