Unit testing 如何对Spring批处理分区工作步骤进行单元测试?
我熟悉单元测试Spring批处理作业步骤(以及整个作业),但我想知道是否有一种方法可以对分区的“工作”步骤进行单元测试(而不测试整个分区步骤) 我感到困惑的是,一个步骤的单元测试通常会调用:Unit testing 如何对Spring批处理分区工作步骤进行单元测试?,unit-testing,spring-batch,Unit Testing,Spring Batch,我熟悉单元测试Spring批处理作业步骤(以及整个作业),但我想知道是否有一种方法可以对分区的“工作”步骤进行单元测试(而不测试整个分区步骤) 我感到困惑的是,一个步骤的单元测试通常会调用: JobLauncherTestUtils.launchStep(步骤名称、作业参数、作业执行上下文) 但是,由于这是分区中的一个工作步骤,我需要某种方式来传递StepExecutionContext。有办法做到这一点吗?除非您不信任Spring Batch提供的步骤实现,否则我将测试工作步骤中使用的组件(需
JobLauncherTestUtils.launchStep(步骤名称、作业参数、作业执行上下文)
但是,由于这是分区中的一个工作步骤,我需要某种方式来传递StepExecutionContext。有办法做到这一点吗?除非您不信任Spring Batch提供的
步骤
实现,否则我将测试工作步骤中使用的组件(需要从步骤执行上下文读取值),而不是工作步骤本身。让我举两个例子:
面向块的工作步骤
在本例中,我将单元测试需要从步骤执行上下文而不是面向块的步骤本身(由Spring Batch提供,除非您不信任它),访问值的组件(读取器、处理器或写入器)
简单微线程辅助步骤
如果worker步骤是一个简单的tasklet,则可以对tasklet
本身进行单元测试,而不是对TaskletStep
进行单元测试
在这两种情况下,组件(读卡器/处理器/写卡器或tasklet)应该是步骤作用域,以便访问步骤执行上下文,并且您可以根据需要模拟/存根步骤执行上下文。请参阅fro了解更多详细信息。您的工作步骤是什么类型的?它是一个简单的tasklet还是一个面向块的tasklet?嗨@MahmoudBenHassine-它是分块的。好的,谢谢,我添加了一个答案。