阅读一些有关测试Spring Batch的博客,并进行相应的测试(请参见下文)。测试完成。但是,我有两个问题:
JdbcTemplate
进行查询或在服务器上实现查询的可能性,例如通过休息(然后将是生产性代码)。那是对的吗?还有其他可能性吗?测试代码:
@SpringBootTest
@RunWith(SpringRunner.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class FooJobTest {
@Inject
private Job fooBatchJob;
@Inject
private JobLauncher jobLauncher;
private JobLauncherTestUtils jobLauncherTestUtils;
@Before
public void setUp() {
jobLauncherTestUtils = new JobLauncherTestUtils();
jobLauncherTestUtils.setJob(fooBatchJob);
jobLauncherTestUtils.setJobLauncher(jobLauncher);
}
@Test
public void testFooJob() {
final JobExecution jobExecution = jobLauncherTestUtils.launchJob();
assertThat(jobExecution.getStatus()).isEqualTo(BatchStatus.COMPLETED);
// would like to query the database
}
}
答案 0 :(得分:1)
要回答您的问题:
JobLauncher
使用您配置的TaskExecutor
,默认情况下是同步的。话虽如此,如果您使用任何异步TaskExecutor
实现,则必须轮询结果(或添加JobExecutionListener
来警告它已完成)。JdbcTemplate
来查询和验证您的数据。恕我直言,将REST API添加到服务器应用程序中仅用于测试可能不是一个好主意。