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