DBUnit oracle возможно определить таблицы, записанные после данного теста - PullRequest
0 голосов
/ 31 августа 2011

У меня есть приложение с ок. 200 столов и ок. 20 java-серверов / пакетных программ. У меня есть довольно хороший набор системных тестов. Эти тесты JUnit являются тестами черного ящика, так как они отправляют транзакции через системные интерфейсы, а затем проверяют ожидаемое поведение через интерфейсы.

У меня также есть довольно хорошая настройка CI, при которой проверки запускают проверки типов компиляции, но я хочу расширить эти проверки, чтобы они соответствовали примерам модульных тестов. Под случаями модульного тестирования я действительно имею в виду один java-сервер или пакетную программу плюс базу данных (фиктивные объекты будут иметь сомнительную ценность). Половина работы уже выполнена: я могу использовать проверки из системного теста в модульных тестах, однако теперь основной вопрос, конечно, состоит в том, как привести базу данных в известное состояние во время модульных тестов.

Я искал DBUnit, чтобы помочь здесь, и функциональность набора данных / чистой вставки довольно крута. Моя главная проблема сейчас заключается в том, есть ли способ получить список того, какие таблицы изменились между двумя точками? Например, я запускаю набор системных тестов, который фокусируется на компоненте X. Какой самый простой способ определить, какие таблицы были добавлены / удалены / обновлены во время набора тестов? Любые отзывы приветствуются Питер

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Вы можете использовать AUDIT или для мониторинга таблиц и ALL_TAB_MODIFICATIONS. Последнее позволяет поддерживать статистику базы данных в актуальном состоянии, поэтому она не предназначена для 100% -ной надежности для этой цели. Например, он может неправильно справляться с откатами.

0 голосов
/ 31 августа 2011

Я не думаю, что эта информация легко доступна в системных каталогах Oracle (или другим способом).

Единственное решение, о котором я могу подумать, - это создать триггер (оператора) для каждой таблицыкоторый записывает время оператора DML в некоторую таблицу аудита.Ваши тесты могут обрезать таблицу аудита перед запуском и проверять ее позже.

Поскольку триггер довольно прост, должна быть возможность автоматически создавать его, например, с помощью блока PL / SQL.

...