Модульные тесты для интерфейса поставщика услуг в Maven - PullRequest
1 голос
/ 04 марта 2011

Недавно наша команда разработчиков перешла с файлов сборки Ant на Maven для нашего цикла управления проектами и сборки.Пока что я действительно доволен результатами.Поскольку я до сих пор не могу разобраться с Maven, у меня нет готового ответа на необычные требования к сборке.

Теперь я создал новый проект и решил сразу же приступить к настройке Maven.,Проект на самом деле представляет собой API, который использует интерфейс поставщика услуг Java (SPI) для поиска подключаемых реализаций.Реализации могут регистрировать себя обычным способом META-INF / services / factoryname .API выполняет большую часть работы, но необходима реализация, чтобы получить что-то действительно полезное.

Мой вопрос сейчас: как мне написать модульные тесты для этого?На ум пришли два метода:

  1. Создайте простую реализацию в тестовых пакетах, создайте ее и затем используйте ее для модульного тестирования.Кажется, это не вписывается в жизненный цикл проекта Maven.

  2. Создайте отдельный проект, содержащий тестовую реализацию.Хотя это означает еще одну запись в нашем репозитории SVN, это похоже на более чистый подход.Проект можно построить и использовать в качестве фляги в цикле тестирования основного проекта API.Он может быть указан как артефакт зависимости с областью тестирования в основном проекте.

В обоих случаях есть фундаментальная проблема ... Реализация потребует, чтобы основной API компилировался.В конце концов, он должен иметь класс фабрики, который реализует абстрактную фабрику API.Но для правильной сборки основного API, фазы тестирования и всего этого потребуется реализация теста.Это действительно вопрос циклических зависимостей.

Какой хороший способ справиться с этим в Maven?В Ant я просто построил бы реализацию между API и его тестами.Если это помогает узнать, я немного злоупотребляю SPI, чтобы найти пакеты объектных моделей, а не отдельную реализацию.Это меньше похоже на JAXP и больше похоже на способ регистрации ресурсов.

1 Ответ

1 голос
/ 04 марта 2011

Вы можете использовать maven-jar-plugin для генерации test-jar как части вашего обычного процесса сборки. Таким образом, вы генерируете оба артефакта за один шаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...