如何使用JUnit和tycho-surefire-plugin测试OSGi声明性服务?

时间:2017-07-12 10:18:29

标签: maven junit tycho tycho-surefire-plugin

尝试使用JUnit和tycho-surefire-plugin测试OSGi服务。

插件的配置

            <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 个答案:

没有答案