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