Обновление: Я полагаю, что DBUnit выполняет перестройку БД, потому что это сказано в методе настройки теста.Если вы измените свой метод настройки, вы можете отменить восстановление БД.Конечно, вы должны сделать это так, чтобы вы получали сброс БД, когда вам это нужно, и опускали его, когда вы этого не делаете.Моя первая ставка будет использовать системное свойство для управления этим.Вы можете установить свойство в командной строке так же, как вы уже это сделали с jdbc.url
et al.Затем в методе настройки вы добавляете if
для проверки этого свойства и выполняете сброс БД, если он установлен.
Тестовая база данных, полностью отделенная от вашей производственной БД, безусловно, является лучшим выбором, если вы можетеиметь это.Вы можете даже использовать, например, Derby , БД в памяти, которая может работать встроенной в JVM.Но в случае, если вы абсолютно не можете иметь отдельную БД, используйте хотя бы отдельную схему тестирования внутри этой БД.
В этом сценарии я бы порекомендовал вам поместить параметры подключения к БД в профили внутри вашей pom, по умолчаниюявляясь тестовой БД, и отдельным профилем для хранения производственных настроек.Таким образом, никогда не случится, что вы случайно запустите свои тесты на производственной БД.
В целом, однако, также важно понимать, что тесты, запускаемые на БД, на самом деле не являются модульными тестами в строгом смысле,скорее интеграционные тесты.Если у вас есть набор таких тестов, хорошо, используйте их как можно больше.Однако вы должны попытаться добавить больше реальных модульных тестов, которые одновременно тестируют только небольшую изолированную часть вашего кода (максимум метод или класс), в идеале самодостаточный (не требующий БД, сети, файлов конфигурации и т. Д.).) чтобы они могли быстро бегать - это очень важный момент.Если у вас есть 5000 модульных тестов, и каждый из них занимает всего 5 секунд, что в сумме составляет почти 7 часов, так что вы, очевидно, не будете запускать их очень часто.Если тест занимает всего 5 миллисекунд, вы получите результаты менее чем за полминуты, поэтому вы можете позволить себе выполнить все свои тесты, прежде чем вносить последнее изменение - много раз в день.Это сильно влияет на скорость обратной связи, которую вы получаете от тестов.
Надеюсь, это поможет.