2015-04-22 39 views
0

我一直在使用中的EclipseLink项目OSGi的测试与大同考试3.3.0下面的代码片段:PAX-4考试没有菲利克斯()方法

@Configuration 
public static Option[] config() { 
    return options(
      repositories("http://repo1.maven.org/maven2"), 
      mavenBundle().groupId("org.osgi").artifactId("org.osgi.compendium").version("4.3.0"), 
      mavenBundle().groupId("org.eclipse.persistence").artifactId("org.eclipse.persistence.asm") 
        .version("2.5.1"), 
      //JAXB API 
      bundle("file:" + PLUGINS_DIR + "javax.xml.bind_2.2.12.v201410011542.jar"), 
      //WS API 
      bundle("file:" + PLUGINS_DIR + "javax.ws.rs_1.1.1.v20101004-1200.jar"), 
      //EclipseLink bundles 
      bundle("file:" + PLUGINS_DIR + "org.eclipse.persistence.moxy_2.7.0." + QUALIFIER + ".jar"), 
      bundle("file:" + PLUGINS_DIR + "org.eclipse.persistence.core_2.7.0." + QUALIFIER + ".jar"), 
      bundle("file:" + PLUGINS_DIR + "org.eclipse.persistence.asm_5.0.1.v201405080102.jar"), 

      junitBundles(), 
      felix()); 
} 

现在,我们切换构建为JDK 8和我正在使用Pax Exam 4.4.0,因为Pax Exam 3.x不能与JDK 8一起构建。我的问题是Pax Exam 4不再提供方便的org.ops4j.pax.exam.CoreOptions.felix()方法。我该如何解决这个问题?我的目标是以尽可能少的配置运行OSGi测试。

如果我删除菲利克斯()方法中,我得到以下错误:

Running org.eclipse.persistence.testing.osgi.OSGiBundleTest 
[main] INFO org.ops4j.pax.exam.spi.DefaultExamSystem - Pax Exam System (Version: 4.4.0) created. 
[main] INFO org.ops4j.pax.exam.junit.impl.ProbeRunner - creating PaxExam runner for class org.eclipse.persistence.testing.osgi.OSGiBundleTest 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.167 sec <<< FAILURE! 
initializationError(org.eclipse.persistence.testing.osgi.OSGiBundleTest) Time elapsed: 0.01 sec <<< ERROR! 
org.ops4j.pax.exam.TestContainerException: No service org.osgi.framework.launch.FrameworkFactory found in META-INF/services on classpath 

感谢

回答

3

felix()和其他框架选项在很久以前已经过时,大同考试3.3之前。 0,如果我没有记错,所以我对你的版本信息感到有点惊讶。

无论如何,如果您想在Felix上运行测试,只需确保Felix是您的类路径中唯一的OSGi实现,就是这样。不需要明确的选项。