我创建了一个OSGi 示例项目,并希望改进集成测试所需的包的供应。
现在,捆绑包是通过文件名静态引用的CoreOptions.bundle("reference:file:" + <path>)
,因此问题是测试将在未来某个时间失败,当 jar 的名称发生更改时(例如由于版本更改)。
有没有更好的方法来部署所需的依赖项?也许使用符号名称或组/工件ID?
@RunWith(PaxExam.class)
public class ServiceTestCase {
@Inject
private Service service;
@Configuration
public Option[] config() {
return CoreOptions.options(
/* needed for ds annotations */
CoreOptions.mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.8.2"),
CoreOptions.bundle("reference:file:../service/target/service-0.0.1-SNAPSHOT.jar"),
CoreOptions.bundle("reference:file:../service.impl/target/service.impl-0.0.1-SNAPSHOT.jar"),
CoreOptions.junitBundles());
}
@Test
public void testInjections() {
Assert.assertNotNull(service);
}
}
ServiceTestCase.java的缩短版本