Как протестировать декларативные сервисы 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.

0 ответов

Другие вопросы по тегам