gpt4 book ai didi

java - 在 Spring-Batch 中测试作业流程的最佳方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 08:29:57 24 4
gpt4 key购买 nike

我有一个复杂的批处理应用程序,我想测试我对流的假设是否正确。

这是我正在使用的一个非常简化的版本:

<beans>
<batch:job id="job1">
<batch:step id="step1" next="step2">
<batch:tasklet ref="someTask1"/>
</batch:step>
<batch:step id="step2.master">
<batch:partition partitioner="step2Partitioner"
step="step2" />
<batch:next on="*" to="step3" />
<batch:next on="FAILED" to="step4" />
</batch:step>
<batch:step id="step3" next="step3">
<batch:tasklet ref="someTask1"/>
</batch:step>
<batch:step id="step4" next="step4">
<batch:tasklet ref="someTask1"/>
</batch:step>
</batch:job>
<batch:job id="job2">
<batch:step id="failingStep">
<batch:tasklet ref="failingTasklet"/>
</batch:step>
</batch:job>

<bean id="step2Partitioner" class="org.springframework.batch.core.partition.support.MultiResourcePartitioner" scope="step">
<property name="resources" value="file:${file.test.resources}/*" />
</bean>

<bean id="step2" class="org.springframework.batch.core.step.job.JobStep">
<property name="job" ref="job2" />
<property name="jobLauncher" ref="jobLauncher" />
<property name="jobRepository" ref="jobRepository" />
</bean>
</beans>

Job1 是我要测试的作业。我真的只想测试 step2.master 到 step3 或 step4 的转换。我根本不想测试 step1...

但是,我想保持 Job1 的规范完好无损,因为此测试测试的是配置,而不是底层操作。我已经有验收测试来测试端到端的东西。这个例子让我可以为小的变化编写有针对性的测试,而无需为每个边缘情况创建单独的端到端测试。

我想测试的是,当 step2 中的作业失败时,step2.master 会将我转到第 4 步而不是第 3 步。是否有好的测试方法?

最佳答案

您可以将 step2 替换为总是失败的模拟实现,并使用 StepExecutionListener 检查是否调用了 step3 和 step4。

这里有很好的例子: http://static.springsource.org/spring-batch/reference/html/testing.html#endToEndTesting

关于java - 在 Spring-Batch 中测试作业流程的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080735/

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