2013-09-26 2 views
0

Я использую последний экзамен Pax (3.3.0) для тестирования OSGi. У меня есть экзамен Pax, работающий, развертывание и запуск моих пакетов и т. Д. Жизнь хорошая.Pax Exam 3.3.0 - Как загрузить утилиту jar?

У меня также есть проект утилиты, содержащий различные фабрики и другие полезные функции, которые я хочу, чтобы иметь возможность повторно использовать в нескольких тестовых проектах. Это проект maven, который включен в качестве иона Pax Exam pom.xml.

Однако, как только я попытаюсь получить доступ к любому из классов, содержащихся в утилите jar, я получаю исключение ClassNotFoundException. Я играл с загрузчиком классов и обнаружил, что я могу напрямую загрузить класс через URLClassLoader. Но тем не менее, я получаю исключение ClassNotFoundException.

Включение проекта утилиты в комплект поставки не является вариантом. Мне нужно будет использовать код утилиты в аннотированных методах @BeforeClass, и экземпляр BundleContext еще не был введен.

Может ли кто-нибудь сказать мне лучший/самый простой способ получить мой проект утилиты внутри экзамена Pax?

ответ

3

Как указано в official documentation, @BeforeClass не поддерживается экзаменом Pax, по крайней мере, не ожидаемым способом. Он выполняется драйвером JUnit, а не внутри тестового контейнера, поэтому нет контекста связки.

Если вы хотите, чтобы ваш код запускался в контейнере, он должен быть в комплекте.

Этот вопрос обсуждался here.

+0

Я вижу. Спасибо за ваш ответ, это просто, но многое разъясняет! – protectedmember

2

Вы можете просто взять служебную банку и добавить ее как wrapped bundle. Затем он будет загружен в ваш контейнер OSGI. Вам просто нужно определить экспортированные пакеты, которые вам понадобятся.

Смежные вопросы