Как выполнить юнит-тестирование рабочих шагов Spring Batch? - PullRequest
0 голосов
/ 09 апреля 2020

Я знаком с модульным тестированием шагов задания Spring Batch (и целых заданий), но мне интересно, есть ли способ для модульного тестирования «рабочего» шага для раздела (без тестирования всего шага раздела).

Я озадачен тем, что обычно модульный тест для шага будет вызывать:

JobLauncherTestUtils.launchStep(stepName, jobParameters, jobExecutionContext)

Но, поскольку это рабочий шаг в разделе, я нужен какой-то способ передачи в StepExecutionContext. Есть ли способ сделать это?

1 Ответ

1 голос
/ 11 апреля 2020

Если вы не доверяете Step реализациям, предоставленным Spring Batch, я бы протестировал компонент (который должен считывать значения из контекста выполнения шага), используемый на рабочем шаге, а не сам рабочий шаг. Позвольте мне привести два примера:

рабочий шаг, ориентированный на куски

В этом случае я бы провел модульное тестирование компонента (читателя, процессора или модуля записи), которому необходим доступ к значению из выполнения шага контекст, а не сам шаг, ориентированный на чанк (который предоставляется Spring Batch и должен быть доверенным, если вы ему не доверяете).

Простой шаг рабочего тасклета

Если рабочий шаг это простой тасклет, вы можете выполнить модульное тестирование самого Tasklet, а не TaskletStep.

В обоих случаях компонент (считыватель / процессор / записывающее устройство или тасклет) должен иметь ступенчатую область видимости, чтобы получить доступ к контекст выполнения шага, и вы можете смоделировать / заглушить контекст выполнения шага по мере необходимости. Пожалуйста, обратитесь к Тестирование ступенчатых компонентов для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...