Как получить транзитивные зависимости для тестируемого пакета для тестовых прогонов PAX Exam OSGi

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

Внутри моего тестового класса у меня есть

@Configuration
public Option[] config() {
    return options(
        junitBundles(),
        mavenBundle("io.moquette", "moquette-broker")
    );
}

К сожалению, он не включает все зависимости для moquette-broker, а только саму банку.

Есть ли способ в тестовом классе указать, что он должен сделать все зависимости для moquette-broker доступными для запуска? Есть ли способ поместить его в pom.xml для плагина exam-maven? Конечно, я ничего не видел в документах. Или мне нужно будет перечислить их в классе самостоятельно?


person Keith    schedule 12.12.2016    source источник


Ответы (1)


Невозможно получить такое поведение в обычном экзамене PAX. Вы должны перечислить все зависимости в элементе @Configuration вашего теста.

Два способа сделать это проще — использовать Apache Karaf или bndtools. Оба помогают очень по-разному.

Если вы используете karaf в качестве платформы для развертывания, вы можете определить свое приложение как функцию. В этой функции вы должны перечислить все зависимости пакетов, как в экзамене pax, но вы также можете ссылаться на другие подобные функции. Так что на практике работы гораздо меньше. Экзамен Pax также может запускать такие тесты karaf на основе функций. См. Пример Aries JPA.

Другой вариант — использовать bndtools, где вы сначала определяете индекс. Этот индекс может быть основан на pom, а также может включать транзитивные зависимости. Затем для вашего теста вы определяете файл bndrun только с пакетами верхнего уровня для развертывания. После этого преобразователь автоматически определит эффективный список пакетов запуска. Посмотрите этот тестовый запуск определение доски Aries jax-rs. К сожалению, это не работает вместе с экзаменом pax. У Bndtools есть собственный бегун. Интеграция bndtools с maven также не так стабильна, как вы можете видеть в используемых версиях моментальных снимков. Надеемся, что следующая версия bndtools (3.4.0) позволит сделать это только с релизными версиями.

person Christian Schneider    schedule 12.12.2016
comment
Ах, к, спасибо, Кристиан. Я уже начал думать, что, наверное, так оно и было. Несчастный. Я пока оставлю это с Pax Exam, но, вероятно, перейду на bndtools, как только они разберутся со своим материалом Maven. Это для чужого проекта, который я хотел иметь в качестве пакета OSGi. Для моего собственного проекта я использую Gradle в качестве инструмента сборки, я посмотрю, насколько хорошо bndtools работает в Gradle. - person Keith; 12.12.2016
comment
Караф выглядит интересно. Я обычно использую ванильный Felix для своей системы, но определенно рассмотрю возможность использования Karaf для окружения моей системы или использования его для облачных конечных точек. - person Keith; 12.12.2016