Ore*_*ren 7 java spring spring-batch
我有一个 Spring boot + 批处理应用程序,它读取源 CSV 文件,处理它并写入目标 CSV 文件,我正在努力编写测试:使用输入 - “simpleFlowInput.csv”并比较“simpleFlowActual.csv” ” 输出带有“simpleFlowExpected.csv”文件,我想编写其中的许多测试,但很难做到这一点。
我的申请只包含一个步骤和一项工作:
@Bean("csvFileToFileStep")
public Step csvFileToFileStep() {
return stepBuilderFactory.get("csvFileToFileStep").<RowInput, RowOutput>chunk(10000).reader(csvRowsReader()).processor(csvRowsProcessor())
.writer(compositeItemWriter()).build();
}
@Bean("csvFileToCsvJob")
Job csvFileToCsvJob(JobCompletionNotificationListener listener) {
return jobBuilderFactory.get("csvFileToCsvJob").incrementer(new RunIdIncrementer()).listener(listener).flow(csvFileToFileStep()).end()
.build();
}
Run Code Online (Sandbox Code Playgroud)
我目前的测试:
@RunWith(SpringJUnit4ClassRunner.class)
@Configuration
@EnableBatchProcessing
@SpringBootTest
public class Tester{
@Autowired
Job csvFileToCsvJob;
@Autowired
Step csvFileToFileStep;
@Autowired
CsvFileReadProcessAndWriteConfig csvFileReadProcessAndWriteConfig;
private JobLauncherTestUtils jobLauncherTestUtils = new JobLauncherTestUtils();
@Test
public void testSimpleFlow() throws Exception {
ClassLoader classLoader = getClass().getClassLoader();
File fileInput = new File(classLoader.getResource("simpleFlowInput.csv").getFile());
File fileActual = new File(classLoader.getResource("simpleFlowActual.csv").getFile());
File fileExpected = new File(classLoader.getResource("simpleFlowExpected.csv").getFile());
FileManager.getInstance().setInputFileLocation(fileInput.toString());
FileManager.getInstance().setOutputFileLocation(fileActual.toString());
System.out.println(fileExpected.length());
System.out.println(fileActual.length());
Assert.assertTrue(fileExpected.length() == fileActual.length());
AssertFile.assertFileEquals(fileExpected,fileActual);//compare
}
}
Run Code Online (Sandbox Code Playgroud)
关于如何测试它的任何建议?
(我发现这个问题写于 2010 年,部分答案提到了“JobLauncherTestUtils”。在 Spring-Batch 中测试工作流程的最佳方法是什么?)
文档的End-To-End Testing of Batch Jobs部分详细解释了如何测试 Spring Batch 作业(包括如何使用JobLauncherTestUtils)。
Spring Batch 提供了一个AssertFile在spring-batch-test模块中调用的不错的实用程序类,它对您的情况很有帮助:您编写预期的文件,然后针对它断言实际的文件(由您的工作生成)。验证输出文件部分显示了如何使用此类。
希望这可以帮助。