Pax Exam 3.3.0 - Как загрузить утилиту jar?
Я использую последний экзамен Pax (3.3.0) для тестирования OSGi. У меня есть Pax Exam, он работает, развертывает и запускает мои связки и т. Д. Жизнь хороша.
У меня также есть служебный проект, содержащий различные фабрики и другие полезные функции, которые я хочу использовать в нескольких тестовых проектах. Это проект Maven, который включен в качестве зависимого экзамена Pax Exam pom.xml.
Однако, как только я пытаюсь получить доступ к любому из классов, содержащихся в утилите jar, я получаю ClassNotFoundException. Я поиграл с загрузчиком классов и обнаружил, что могу напрямую загружать класс через URLClassLoader. Но все же я получаю исключение ClassNotFoundException.
Превратить проект утилиты в пакет не вариант. Мне нужно будет использовать служебный код в аннотированных методах @BeforeClass, а экземпляр BundleContext еще не внедрен.
Кто-нибудь может сказать мне лучший / самый простой способ получить мой служебный проект в экзамене Pax?
2 ответа
Как указано в официальной документации, @BeforeClass
Pax Exam не поддерживается, по крайней мере, не так, как ожидается. Он выполняется драйвером JUnit, а не внутри тестового контейнера, поэтому нет контекста пакета.
Если вы хотите, чтобы ваш код запускался в контейнере, он должен быть в комплекте.
Этот вопрос обсуждался здесь.
Вы можете просто взять утилиту jar и добавить ее в виде упакованного пакета. Затем он будет загружен в ваш контейнер OSGI. Вам просто нужно определить экспортированные пакеты, которые вам понадобятся.