【问题标题】:How do I unit test Spring Batch partition worker steps?如何对 Spring Batch 分区工作步骤进行单元测试?
【发布时间】:2020-04-09 13:16:17
【问题描述】:

我熟悉 Spring Batch 作业步骤(和整个作业)的单元测试,但我想知道是否有办法对分区的“工作”步骤进行单元测试(无需测试整个分区步骤)。

我不解的是,通常一个步骤的单元测试会调用:

JobLauncherTestUtils.launchStep(stepName, jobParameters, jobExecutionContext)

但是,这是一个分区中的工作步骤,我需要一些方法来传递 StepExecutionContext。有没有办法做到这一点?

【问题讨论】:

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

标签: unit-testing spring-batch


【解决方案1】:

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

面向块的工作步骤

在这种情况下,我将对需要从步骤执行上下文访问值的组件(读取器、处理器或写入器)进行单元测试,而不是面向块的步骤本身(由 Spring Batch 提供并且应该被信任) ,除非你不信任它)。

简单的 tasklet worker 步骤

如果工作步骤是一个简单的小任务,您可以对Tasklet 本身而不是TaskletStep 进行单元测试。

在这两种情况下,组件(读取器/处理器/写入器或 tasklet)都应该在步骤范围内以访问步骤执行上下文,并且您可以根据需要模拟/存根步骤执行上下文。详情请参考Testing Step-Scoped Components

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2023-03-28
    • 1970-01-01
    • 2019-07-09
    • 2019-12-11
    • 2023-03-18
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多