Тестирование интеграции Spring Batch Step

Я ищу общие мнения и советы по тестированию пакетного шага Spring и его выполнения.

Мой основной шаг - чтение из api, обработка в объект сущности, а затем запись в БД. Я проверил счастливый путь, что шаг завершился успешно. Теперь я хочу протестировать обработку исключений, когда данные отсутствуют на этапе процессора. Я мог бы протестировать класс процессора изолированно, но я бы предпочел протестировать шаг в целом, чтобы убедиться, что сбой процесса правильно отражается на уровне шага / задания.

Я прочитал руководство по весеннему пакетному тестированию и, если честно, я немного запутался в нем. Можно ли использовать StepScopeTestUtils.doInStepScope или обновить StepExecution для проверки этого сценария? В идеале я бы заставил читателя возвращать неверные данные до того, как сработает процессор.

Любой совет будет очень признателен.

0
0
406
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Лучший подход зависит от объема вашего теста. Читая здесь немного между строк, я предполагаю, что вы используете Spring IT, настраиваете контекст Spring и используете JobLauncherTestUtils для запуска задания или шага.

Я думаю, что самый простой способ - заменить один из ваших beans на макет, который запускает сценарий ошибки. Используя Mockito, это можно сделать, добавив что-то подобное в вашу тестовую конфигурацию.

@Bean
public ReaderDataRepository dataApi(){
    return mock(ReaderDataRepository.class);
}

Затем этот bean-компонент отменяет фактическую реализацию. Затем в тестовой настройке вы можете явно настроить этот макет.

@Autowired
private ReaderDataRepository mockedRepository;

@Before
public void setUp() {
    when(mockedRepository.getData()).thenReturn(faultyData())
}

Это включает в себя очень мало манипуляций с «магией» Spring и очень явное определение ошибки внутри теста.

Большое спасибо. Этот ответ имеет смысл. Приму и обновлю свой собственный комментарий, как только я успешно выполню.

MikeMelo91 18.04.2018 10:26

Другие вопросы по теме