Экзамен PAX - класс не найден
Я работаю над интеграционными тестами PAX для нашего проекта, и у меня мало проблем с загрузкой классов.
Я развернул несколько пакетов в PAX (используется контейнер karaf). Когда караф поднялся, я увидел, что мои пакеты и сервисы работают и работают. Однако в моих тестовых примерах я ссылался на класс (не на службу или компонент), который будет использоваться во время выполнения теста. Класс находится в комплекте и пакет успешно запущен, но я получаю ClassnotFoundError
при доступе к классу при выполнении тестового примера, как показано ниже,
**java.lang.ClassNotFoundException: com.myproject.sample.bundle.DatabaseConfig
at** org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.integrationtest.testcases.internal.development.LaunchContainerTest.populateDBProfiles(LaunchContainerTest.java:189)
at com.integrationtest.testcases.internal.development.LaunchContainerTest.testLaunchOSGiContainerWithDefualtSettingsAndSleep(LaunchContainerTest.java:152)
Failed tests: LaunchContainerTest.testLaunchOSGiContainerWithDefualtSettingsAndSleep:152->populateDBProfiles:189 ▒ ClassNotFound
Это как-то связано с контейнером?
1 ответ
Поскольку сам ваш тест также будет выполняться в контексте OSGi, вам необходимо адаптировать его. Динамически сгенерированный тестовый пакет должен знать, что ему нужно импортировать рассматриваемый класс. Для этого вы можете добавить специальный метод настройки зонда. Как следующее ниже:
@ProbeBuilder
public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
//make sure the needed imports are there.
probe.setHeader(Constants.IMPORT_PACKAGE, "*,com.myproject.sample.bundle.*");
return probe;
}