Как протестировать декларативные сервисы OSGi, используя JUnit и tycho-surefire-plugin?
Пытался протестировать сервис OSGi с использованием JUnit и плагина tycho-surefire-plugin.
Конфигурация плагина
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<showEclipseLog>true</showEclipseLog>
<dependencies>
<dependency>
<type>p2-installable-unit</type>
<artifactId>org.eclipse.equinox.ds</artifactId>
</dependency>
</dependencies>
</configuration>
</plugin>
Тестовый сценарий (регистрация операторов и т. Д. Опущены). Тестовый класс содержится в собственном пакете OSGi, отделенном от тестируемого кода.
@Component(name = "LdapConnectionConfigurationServiceTest", immediate = true)
public class LdapConnectionConfigurationServiceTest {
private LdapConnectionConfiguration testObject;
@Reference
public void bindTestObject(final LdapConnectionConfiguration testObject) {
this.testObject = testObject;
}
public void unbindTestObject(final LdapConnectionConfiguration testObject) {
this.testObject = null;
}
@Test
public void testLdapPort() {
assertEquals(10389, testObject.getLdapPort());
}
}
Tycho запускает контейнер OSGi, тестовый пакет, запускает LdapConnectionConfigurationServiceTest
сервис и правильно внедряет testObject.
Впоследствии JUnit запускает этот тестовый пример, но создает другой экземпляр этого класса. Который не вводит testObject, поэтому я получаю NullPointerExceptions.
Не знаю, чего мне не хватает... Я хочу запустить контрольный пример для внедренного сервиса, предоставляемого платформой OSGi.