我是Spring Batch的新手,我开始开发一个简单的批处理应用程序。现在我正在考虑一些单元测试未知的JUnit,这可能是我的应用程序和代码健康)使用JUnit进行单元测试,无需XML配置的Spring批处理
问题是,我找不到任何资源(例子,tutos ...)在互联网上,显示如何在不使用XML的情况下使用Spring Batch执行单元测试。
这里是我的代码更清晰:
配置类:
package my.company.project.name.batch.config
@Configuration
@EnableBatchProcessing
@ComponentScan({
"my.company.project.name.batch.reader",
"my.company.project.name.batch.tasklet",
"my.company.project.name.batch.processor",
"my.company.project.name.batch.writer"
})
@Import({CommonConfig.class})
public class MyItemBatchConfig {
@Autowired
private StepBuilderFactory steps;
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private MyItemTasklet myItemTasklet;
@Bean
public Job myItemJob(@Qualifier("myItem") Step loadProducts){
return jobBuilderFactory.get("myItemJob").start(myMethod).build();
}
@Bean(name= "myItem")
public Step myMethod(){
return steps.get("myItem").tasklet(myItemTasklet).build();
}
}
MyItemReader类:
package my.company.project.name.batch.reader
@Component
public class MyItemReader implements ItemReader<MyItem>{
@Value("${batch.load.produit.csv.file.path}")
private String csvFilePath;
private LinkedList<CsvRawLine> myItems;
@PostConstruct
public void init() {
myItems = new LinkedList<>(CsvUtil.getCsvReader(MyItem.class, csvFilePath));
}
@Override
public MyItem read() throws Exception{
return myItems.poll();
}
}
ItemProcessor中类:
package my.company.project.name.batch.processor
@Component
public class MyItemProcessor implements ItemProcessor<MyItem, MyItemProcessorResult> {
public MyItemProcessorResult process(MyItemitem) throws Exception {
//processing business logic
}
}
ItemWriter类:
package my.company.project.name.batch.writer
@Component
public class MyItemWriter implements ItemWriter<MyItem> {
@Override
public void write(List<? extends MyItem> myItems) throws Exception {
//writer business logic
}
}
MyItemTasklet类,将调用,从而实现由一批通缉任务的所有以前的类:
package package my.company.project.name.batch.tasklet
@Component
public class MyItemBatchTasklet implements Tasklet{
@Autowired
public MyItemReader myItemReader;
@Autowired
public MyItemProcessor myItemProcessor;
@Autowired
public MyItemeWriter myItemWriter;
@Override
public RepeatStatus execute execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
//calling myItemReader, myItemProcessor and myItemWriter to do the business logic
return RepeatStatus.FINISHED
}
}
MyItemTasklet类,将它的主要方法启动任务蕾:
package package my.company.project.name.batch
public class MyItemTaskletLauncher{
public MyItemTaskletLauncher(){
//No implementation
}
public static void main (String[] args) throws IOException, JobExecutionException, NamingException {
Launcher.launchWithConfig("Launching MyItemTasklet ...", MyItemBatchConfig.class,false);
}
}
您是否了解**如何在使用XML **时使用Spring Batch执行单元测试? –
其实不,我不知道。 –