Возможно, я делаю что-то не так, но не могу найти хороший выход для следующей ситуации.
Я хотел бы провести модульное тестирование службы, использующей Spring Batch внизу, чтобы выполнить работу.Задания выполняются через предварительно настроенные AsyncTaskExecutor
в отдельных потоках.В моем модульном тесте я хотел бы:
- Создать несколько объектов домена и сохранить их с помощью DAO
- Вызвать сервисный метод для запуска задания
- Подождите, показадание завершено
- Использование DAO для извлечения объектов домена и проверки их состояния
Очевидно, что все вышеперечисленное должно выполняться внутри одной транзакции, но, к сожалению, транзакции не распространяются нановые темы (я понимаю причину этого).
Идеи, которые пришли мне в голову:
- Зафиксируйте транзакцию # 1 после шага (1).Это не хорошо, так как состояние БД следует откатывать после модульного теста.
- Использовать
Isolation.READ_UNCOMMITTED
в конфигурации задания.Но это требует двух разных конфигураций для тестирования и производства.