尝试使用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框架提供的注入服务运行测试用例。