Как получить транзитивные зависимости для тестируемого комплекта для тестовых прогонов PAX Exam OSGi
Я использую экзамен PAX для тестирования интеграции. Мой комплект, который я хочу протестировать, зависит от нескольких других комплектов. К сожалению, я не смог автоматически установить все зависимости.
В моем тестовом классе у меня есть
@Configuration
public Option[] config() {
return options(
junitBundles(),
mavenBundle("io.moquette", "moquette-broker")
);
}
К сожалению, он не включает в себя все зависимости для брокера moquette, только саму баночку.
Есть ли способ в тестовом классе указать, что он должен сделать все зависимости для moquette-broker доступными для запуска? Есть ли способ поместить его в файл pom.xml для экспертизы-плагина? Конечно, я ничего не видел в документах. Или мне придется самим перечислять их в классе?
1 ответ
Нет никакого способа получить это поведение в обычном экзамене PAX. Вы должны перечислить все зависимости в элементе @Configuration вашего теста.
Два способа сделать это проще - использовать Apache Karaf или bndtools. Оба помогают по-разному.
Если вы используете karaf в качестве платформы развертывания, вы можете определить свое приложение как функцию. В этой функции вы должны перечислить все зависимости пакета, как в экзамене pax, но вы также можете обратиться к другим таким функциям. Так что на практике это гораздо меньше работы. Экзамен Pax может также выполнить такие тесты karaf, основанные на особенностях. Смотрите пример Aries JPA.
Другой вариант - использовать bndtools, где вы сначала определяете индекс. Этот индекс может быть основан на pom и может также включать транзитивные зависимости. Затем для вашего теста вы определяете файл bndrun, содержащий только пакеты верхнего уровня для развертывания. Затем распознаватель автоматически определит эффективный список пакетов выполнения. Посмотрите это определение тестового прогона доски Aries jax-rs. К сожалению, это не работает вместе с экзаменом. У Bndtools есть свой раннер. Интеграция bndtools в maven также не так стабильна, как вы можете видеть в используемых версиях снимков. Мы надеемся, что следующая версия bndtools (3.4.0) позволит сделать это только с выпуском версий.