Я пытаюсь собрать свой пакет OSGI с помощью pax-maven-buildи в в то же время протестируйте его с помощью pax-exam. У него есть некоторый пакет, который я могу протестировать со следующей тестовой конфигурацией pax-exam:
@RunWith(JUnit4TestRunner.class)
@ExamReactorStrategy(AllConfinedStagedReactorFactory.class)
public class OSGILoaderTest {
@Inject
protected BundleContext bundleContext;
@Configuration
public Option[] config() throws MalformedURLException {
String projectRoot = // a path to my project
return options(
junitBundles(),
equinox(),
bundle(projectRoot + "libs/org.eclipse.core.variables_3.2.500.v20110511.jar"),
bundle(projectRoot + "libs/org.eclipse.core.contenttype_3.4.100.v20110423-0524.jar"),
bundle(projectRoot + "libs/org.eclipse.core.expressions_3.4.300.v20110228.jar"),
// etc...
);
}
@Test
public void getBundleContext() throws RodinDBException {
IRodinDB rodinDB = RodinCore.getRodinDB();
assertNotNull(rodinDB);
}
}
Здесь я вижу, что могу получить доступ к экземпляру IRodinDB из подготовленного мной jar-файла.
Теперь у меня есть код моего собственного пакета, который будет использовать все подготовленные файлы jar. Но я даже не могу проверить свой код, например:
@Test
public void checkAccessToRodinDbTest() {
VTGService service = null;
assertTrue(true);
}
выдает ошибку во время компиляции:
[ОШИБКА] Не удалось выполнить цель org.ops4j:maven-pax-plugin:1.5:testCompile (default-testCompile): ошибка компиляции
[ОШИБКА] не удается найти символ
Символ [ОШИБКА]: class VTGService
Похоже, тестовая компиляция не может видеть «src/main/java», вопреки ожидаемому поведению maven-compiler-plugin по умолчанию.Но в моем случае вы можете видеть, что maven использует не плагин компилятора, а вместо него maven-pax-plugin.
Вопрос: как я могу протестировать свой пакет с pax-exam?
update1
Похоже, что это проблема последней версии maven-pax-plugin, поскольку базовый пример доступен в плагине ops4j pax maven(в разделе Использование плагина Pax внутри POM), кажется, страдает от той же проблемы.
update2
По просьбе Дмитрия это pom.xml моего пакета:
../poms/compiled/
fr.xlim.ssd.vtg.build
compiled-bundle-settings
0.1-SNAPSHOT
fr.xlim.ssd.vtg.bundle
fr.xlim.ssd.vtg.bundle
4.0.0
fr.xlim.ssd.vtg
fr.xlim.ssd.vtg.bundle
0.1-SNAPSHOT
${bundle.symbolicName}
bundle
pom
${project.parent.groupId}
provision
true
org.osgi
osgi_R4_core
true
org.osgi
osgi_R4_compendium
true
junit
junit
4.9
test
org.ops4j.pax.exam
pax-exam
2.3.0
test
org.ops4j.pax.exam
pax-exam-junit4
2.3.0
test
org.ops4j.pax.exam
pax-exam-inject
2.3.0
test
org.ops4j.pax.url
pax-url-mvn
1.3.5
test
org.ops4j.pax.exam
pax-exam-container-native
2.3.0
test
javax.inject
javax.inject
1
test
org.ops4j.pax.exam
pax-exam-link-mvn
2.3.0
test
ch.qos.logback
logback-classic
1.0.0
ch.qos.logback
logback-core
1.0.0
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
1.6
Я не уверен, что это самое элегантное решение, но я создал новый проект maven, когда смогу импортировать свой собственный пакет. как в исходном коде моего вопроса.
Есть ли элегантный способ добавить мои собственные исходные коды Java непосредственно в качестве нового пакета для тестирования в том же проекте Maven? Это может быть невозможно (поскольку операция сборки пакета выполняется послекомпиляции и тестов)...