我是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執行單元測試? –
其實不,我不知道。 –