2016-04-21 2 views
0

У меня есть функция функциональности, настраивающая функцию аудита приложения (базы данных MySQL). Вот что он делает: - получить всю структуру таблиц базы данных - создать соответствующую таблицу аудита (или изменить существующий) - воссоздать основные таблицы триггеров захвата какие-либо данные изменитьКак проверить изменение DDL

Сейчас я думаю о том, как написать тест это. Я создал тест интеграции в реальном времени, изменяя структуру db, запустив это проверочное настроечное объявление, проверяя его правильность, но это не тот тест, который я могу включить в приложение (он изменяет реальную базу данных). Действительно ли можно выполнить тестирование этой функции и как, если да? Как имитировать и проверить изменение DDL?

+0

Не могли бы вы запустить его в базе данных в памяти, такой как Derby, в ваших модульных тестах? – DaveH

+0

Нет, я не могу. Синтаксис DDL довольно специфичен для базы данных, поэтому я не буду работать в другой базе данных без изменений, я пробовал H2 до сих пор, и он терпит неудачу. – smoczyna

+0

Я могу представить только один способ проверить его прямо сейчас, а именно проверку количества таблиц, столбцов и триггеров (правильность материалов аудита) после полной установки. Он тестирует результат скорее, чем сама функциональность, но это лучше, чем ничего. – smoczyna

ответ

0

Чтобы сделать это, я решил вместо этого выполнить проверку генерации запросов (их правильность). Я извлек все операторы SQL (статические и динамические) для разделения методов, а затем использовал частичное издевательство (Mockito) для выполнения этих методов и проверить, генерируют ли они SQL-запросы, как ожидалось. Таким образом, мне не нужно ничего запускать в реальности и по-прежнему иметь 90% покрытия, что было настоящей целью здесь. Ключевой частью было отделить все вызовы SQL от основного метода, чтобы включить частичное издевательство.

Смежные вопросы