С другой стороны: если соединение настраивается, уменьшите тайм-аут строки подключения до 1 секунды - это упростит задачу. Заполните таблицу кучей данных и пусть 3 других процесса вращаются в цикле, обновляя фрагменты этой таблицы с транзакцией вокруг цикла. Не изменяйте фактическую процедуру, вызываемую приложением (инъекция waitfor). Это делает интеграционный тест недействительным.
Но на самом деле это пример использования модульного тестирования и внедрения зависимостей. Некоторые вещи просто сложно протестировать при интеграции. Модульный тест + внедрение зависимостей .
- Реальный: код, который гадит -> Тайм-аут базы данных (трудно воспроизвести).
- Рефакторинг: код, который гадит -> Репозиторий (только доступ к данным) -> База данных
- Модульный тест: код, который гадит> Мок-репозиторий для выброса -> null
- Теперь у вас есть неудачный тест на код, который может его исправить.
Это инъекция «зависимости». Разработчик может внедрить зависимость в базу данных, заменив что-то, что имитирует поведение зависимости. Подходит для всех тестов базы данных. В любом случае, имея модульный тест, вы знаете, что исправление делает то, что должно, но вам все равно нужно интеграционное тестирование. В этом случае лучше сосредоточиться на регрессии - это означает, что тестирование ничего не сломало, и функция все еще работает.
Вы уже создали свой патч, поэтому я думаю, что я слишком поздно отвечу.