У меня есть проект, который я создаю с помощью Maven, который использует Hibernate (и Spring) для извлечения данных из базы данных и т. Д.
Мои "тесты" для DAO в моем проекте расширяют AbstractTransactionalDataSourceSpringContextTests
Spring, так что DataSource может быть подключен к моему тестируемому классу, чтобы иметь возможность фактически выполнять логику запроса / гибернации, извлекать данные и т. Д.
В некоторых других проектах я использовал эти типы тестов совместно с базой данных HSQL (либо в памяти, либо с указанием на файл), чтобы иметь возможность эффективно тестировать логику запросов к реальной базе данных, не полагаясь на внешнюю базу данных. Это прекрасно работает, поскольку позволяет избежать каких-либо внешних зависимостей, и «состояние» базы данных перед запуском тестов (каждое из которых заключено в транзакцию, для которой выполняется откат) хорошо определено.
Мне любопытно, как лучше организовать эти тесты, которые на самом деле не очень понятны интеграционным тестам, с Maven. Хранить эти тесты в src/test/java
кажется немного грязным, но из того, что я прочитал, похоже, нет единой стратегии или практики для организации интеграционных тестов с Maven.
Из того, что я прочитал до сих пор, похоже, что я могу использовать Failsafe плагин (или второй экземпляр Surefire) и связать его с фазой integration-test
, и что я также могу связать настраиваемая логика запуска или завершения работы (например, для запуска / остановки экземпляра HSQL) до pre-integration-test
или post-integration-test
. Но действительно ли это лучший метод?
Так что мой вопрос в основном таков: какова общепринятая лучшая практика при организации этого с Maven? У меня проблемы с поиском какого-либо последовательного ответа в документации.
Я бы хотел:
- Отдельные модульные тесты от интеграционных тестов, поэтому во время фазы
test
- Возможность привязки пользовательской логики запуска / выключения к
pre-integration-test
и post-integration-test
- Объединить / представить отчеты об интеграционных тестах с модульным тестом. Отчеты Surefire