gpt4 book ai didi

java - 如何测试 Spring Batch 应用程序的整个流程?

转载 作者:行者123 更新时间:2023-11-30 07:43:57 28 4
gpt4 key购买 nike

我有一个 Spring boot + 批处理应用程序,它读取源 CSV 文件,处理它并写入 objective-c SV 文件,我正在努力编写测试,它将:使用输入 - “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();
}

我当前的测试:

@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
}
}

关于如何测试它有什么建议吗?

(我发现这个问题写于 2010 年,部分答案提到“JobLauncherTestUtils”。What is the best way to test job flow in Spring-Batch?)

最佳答案

End-To-End Testing of Batch Jobs文档的一部分详细解释了如何测试 Spring Batch 作业(包括如何使用 JobLauncherTestUtils)。

Spring Batch 在 spring-batch-test 模块中提供了一个名为 AssertFile 的实用类,这对您的情况很有帮助:您编写预期的文件,然后断言实际的(由你的工作产生)反对它。本节Validating Output Files展示了如何使用这个类。

希望这对您有所帮助。

关于java - 如何测试 Spring Batch 应用程序的整个流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52913072/

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