【问题标题】:Dynamically reference bundles for integration test with Pax Exam动态参考捆绑包以与 Pax Exam 进行集成测试
【发布时间】:2016-06-19 10:41:23
【问题描述】:

我创建了一个OSGi example project,并希望改进集成测试所需的捆绑包的配置。

现在捆绑包是通过文件名静态引用的,利用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的缩短版

【问题讨论】:

    标签: java maven osgi declarative-services pax-exam


    【解决方案1】:

    您的项目是一个 maven 项目并捆绑了 maven 工件。最好使用mavenBundle 引用:

    1. 在测试的 pom 中引用这些依赖项
    2. 使用depends-maven-plugin 生成一个带有依赖版本的属性文件:

      <plugin>
          <groupId>org.apache.servicemix.tooling</groupId>
          <artifactId>depends-maven-plugin</artifactId>
          <version>1.2</version>
          <executions>
              <execution>
                  <id>generate-depends-file</id>
                  <phase>generate-resources</phase>
                  <goals>
                      <goal>generate-depends-file</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
      


    3. 使用mavenBundle 引用:

      mavenBundle().groupId("org.beyene.mode")
        .artifactId("service.consumer").versionAsInProject() 
      

    【讨论】:

    • 感谢您的回答。我应该对测试 pom 中的依赖项使用什么范围?提供?
    • 测试范围,但老实说,没关系。 pax-exam 将提供一个新容器,不会使用测试的类路径。
    • 谢谢。从命令行一切正常。不过,Eclipse 正在抱怨:Plugin execution not covered by lifecycle configuration: org.apache.servicemix.tooling:depends-maven-plugin:1.2:generate-depends-file (execution: generate-depends-file, phase: generate-resources) 你知道吗?关于那个?
    • 那只是日食,它对depends-maven-plugin 一无所知,也不知道该怎么做。你可以告诉它忽略这个插件。
    猜你喜欢
    • 2015-01-12
    • 2013-02-10
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多