В Java-проектах тесты JUnit выполняют настройку, проверку, срыв. Даже когда вы издеваетесь над реальным db, используя db in-memory, вы обычно откатываете транзакцию или удаляете db из памяти и воссоздаете ее между каждым тестом. Это дает вам тестовую изоляцию, поскольку один тест не оставляет артефактов в среде, которая может повлиять на следующий тест. Каждый тест начинается в известном состоянии и не может перетекать в другой.
Теперь у меня есть сборка Oracle db, которая создает 1100 таблиц и 400 Кбайт кода - много пакетов pl/sql. Я бы хотел не только протестировать db install (полностью создать с нуля, частично - обновить с предыдущего db и т.д.) И убедиться, что все таблицы и другие объекты находятся в состоянии, которое я ожидаю после установки, но ТАКЖЕ запускать тесты на pl/sql (я не уверен, как бы я сделал это в точности - предложения?).
Мне бы хотелось, чтобы все это работало от Jenkins для CI, чтобы ошибки разработки были обнаружены с помощью регрессионного тестирования.
Во-первых, я должен использовать корпоративную версию вместо XE, поскольку XE не поддерживает java SP и зависимость от Oracle Web Flow. Даже если я устраню эти зависимости, сборка обычно занимает 1,5 часа, чтобы загрузить (полная сборка).
Итак, как вы проводите тестовую изоляцию в этой среде? Использовать транзакции для каждого теста и откатывать их обратно? Хорошо, как насчет тех процедур pl/sql, которые совершают в них?
Я думал о резервном копировании и восстановлении до reset db после каждого теста или воссоздал весь db между каждым тестом (слишком резким). Оба они непрактичны, так как для его установки требуется час. Выполнение этого для каждого теста является излишним и безумным.
Есть ли способ нарисовать линию в песке в схеме db (-ов), а затем отбросить ее до этого момента? Сорта, как большая функция отмены. Что-то кроме expdp/impdp или rman. Возможно, весь подход отключен. Предложения? Как это сделали другие?
Для CI или небольшого окна обновления продукта набор тестов для чатов должен выполняться в разумные сроки (30 минут идеально подходят).
Есть ли продукты, которые могли бы помочь в достижении этой способности "отменить"?