Один подход, который я использовал с большим успехом заключается в использовании:
- Maven построить свой проект
- Liquibase (или пролетный путь), чтобы управлять схемой базы данных и управления версиями это
- H2, как база данных в памяти, которая запускается вместе с вашими тестами.
Существует неплохая возможность узнать, если вы не использовали ничего из вышеперечисленного, но по моему опыту это того стоило. Это очень хорошо работало с приложением Spring; с другими настройками ваш пробег может отличаться.
Maven должен запустить экземпляр базы данных H2 в памяти перед выполнением любых тестов. В приложении Spring вы можете просто указать свой источник данных с URL-адресом H2 JDBC, и он начнется автоматически.
Вы можете использовать Liquibase для запуска набора XML-скриптов для настройки схемы базы данных, а затем отдельный файл для заполнения их тестовыми данными (либо путем указания разных файлов при работе с Liquibase, либо с помощью атрибута context
каждый changeSet
). Это можно сделать с помощью Maven или весной с использованием конкретного компонента Liquibase.
Оттуда вы можете протестировать свое приложение точно так, как если бы оно было обычным приложением. Не нужно насмехаться, и в результате вы получаете гораздо более полезные тесты. Возможно, вам придется изменить свою схему или иным образом обойти SQL-различия между H2 и вашей собственной RDBMS.
Будучи в стороне, я очень благодарен за подобные испытания. По моему опыту насмехаясь над тем, что на самом деле не дает вам никаких интересных идей, и должно быть последним средством, когда интеграционные тесты внутри сборки невозможны. Есть много, которые не согласны со мной, хотя!
Что конкретно вы пытаетесь протестировать? Если вы выполняете интеграционный тест * с * базой данных, вы можете либо работать с реальной базой данных, либо использовать внутри памяти, либо в любом случае. В любом случае, да, если есть БД, вам нужны данные, которые подтверждают фактическая схема, по крайней мере, до тех пор, пока ваши тесты не будут действовать против нее. –
Спасибо, например, если я хочу проверить debry. Внутри mothods класса, который я тестирую, я сохраняю (модель) команды. Итак, не меняя код класса, могу ли я просто настроить среду для использования debry вместо mysql? – Sara