Unit testing 如何对Spring批处理分区工作步骤进行单元测试?

Unit testing 如何对Spring批处理分区工作步骤进行单元测试?,unit-testing,spring-batch,Unit Testing,Spring Batch,我熟悉单元测试Spring批处理作业步骤(以及整个作业),但我想知道是否有一种方法可以对分区的“工作”步骤进行单元测试(而不测试整个分区步骤) 我感到困惑的是,一个步骤的单元测试通常会调用: JobLauncherTestUtils.launchStep(步骤名称、作业参数、作业执行上下文) 但是,由于这是分区中的一个工作步骤,我需要某种方式来传递StepExecutionContext。有办法做到这一点吗?除非您不信任Spring Batch提供的步骤实现,否则我将测试工作步骤中使用的组件(需

我熟悉单元测试Spring批处理作业步骤(以及整个作业),但我想知道是否有一种方法可以对分区的“工作”步骤进行单元测试(而不测试整个分区步骤)

我感到困惑的是,一个步骤的单元测试通常会调用:

JobLauncherTestUtils.launchStep(步骤名称、作业参数、作业执行上下文)


但是,由于这是分区中的一个工作步骤,我需要某种方式来传递StepExecutionContext。有办法做到这一点吗?

除非您不信任Spring Batch提供的
步骤
实现,否则我将测试工作步骤中使用的组件(需要从步骤执行上下文读取值),而不是工作步骤本身。让我举两个例子:

面向块的工作步骤 在本例中,我将单元测试需要从步骤执行上下文而不是面向块的步骤本身(由Spring Batch提供,除非您不信任它),访问值的组件(读取器、处理器或写入器)

简单微线程辅助步骤 如果worker步骤是一个简单的tasklet,则可以对
tasklet
本身进行单元测试,而不是对
TaskletStep
进行单元测试


在这两种情况下,组件(读卡器/处理器/写卡器或tasklet)应该是步骤作用域,以便访问步骤执行上下文,并且您可以根据需要模拟/存根步骤执行上下文。请参阅fro了解更多详细信息。

您的工作步骤是什么类型的?它是一个简单的tasklet还是一个面向块的tasklet?嗨@MahmoudBenHassine-它是分块的。好的,谢谢,我添加了一个答案。