Мы использовали фиктивную таблицу с одной записью в качестве маркера блокировки, когда запускали тесты базы данных для группы разработчиков в общей базе данных. Мы фактически получили блокировку для каждого тестового примера в отдельности, так что разработчику, который хочет запустить один тестовый пример, не нужно ждать, пока другой разработчик, который запускает весь пакет, завершит работу. Мы сделали каждый тест настроенным на собственные данные - без переноса между методами тестирования.
Мы использовали механизм блокировки базы данных, чтобы фактически ставить тесты в очередь, вместо того, чтобы проваливать тест, когда кто-то другой уже запускает тест. Я думаю, что алгоритм блокировки Oracle немного отличается, поэтому я не знаю, как это будет работать.
Единственное место, где мы столкнулись с проблемами, это когда разработчик хотел пройти тест в режиме отладки. Это заблокировало бы любых других разработчиков, которые хотели запустить тест, пока он не выпустит отладчик. Мы записали имя текущего пользователя в фиктивную таблицу и заставили механизм блокировки напечатать сообщение, если оно заблокировано более чем на 30 секунд: «Боб в данный момент выполняет тест и последние 5 минут».
Это было хорошо, но это было много работы, чтобы поддерживать. Мы старались уменьшить количество тестов базы данных и выполняем большинство наших тестов как чистые модульные тесты в памяти.