当前位置: 首页 > 知识库问答 >
问题:

使用Pax考试的OSGi测试失败,未发现容器错误

夏嘉德
2023-03-14

使用Pax-Exam进行的OSGi测试失败,没有发现容器错误。

这是因为我将java 7升级为java 8,并因此不得不更改pax-exam-2.3.0。jar(与java 8不兼容)到pax-exam-4.4.0。罐子以及他们的另一种依赖。在前面的配置中,我们曾经编写felix(),但现在已经改变了。

现在如何启动felix容器?

配置:

@RunWith(PaxExam.class)
@ExamReactorStrategy(PerMethod.class)
public class GibsonMiniAGLTest
{
    @Configuration
    public Option[] config() {



        return options(


                vmOption("-Dcom.sun.management.jmxremote"),
                systemPackages("sun.misc",
                        "sun.security.util",
                        "sun.security.x509",
                        "com.sun.media.imageioimpl.plugins.jpeg2000"
                        ),
                bootDelegationPackages(
                    "sun.misc.*",
                    "com.sun.*"
                ),
                bundle("abc.jar"),
                junitBundles()

            );
    }
 }

Ant文件:

<target name="run_STOSGI">
        <property file="build/jamunTimeOut.properties"/>
        <echo message="Calculated TimeOut for Jamun_Tests in MilliSeconds = ..........." />
        <echo message="${timeout}" />
        <junit printsummary="yes" showoutput="yes" timeout="${timeout}" haltonfailure="on" maxmemory="256M" fork="on">
            <jvmarg value="-Dorg.xml.sax.driver=${saxParser}" />
            <classpath>
                <pathelement path="${jamun.path}" />
                <pathelement path="${junit.path}" />
                <pathelement path="${jar}/core.jar" />
            </classpath>
            <formatter type="xml" />
            <sysproperty key="BAT_PLUGIN" value="${BAT_PLUGIN}"/>
            <test name="com.adobe.gibsontests.SmokeTestOSGIosgi" />
        </junit>
        <move todir="${smokeTest_Location}" failonerror="false" overwrite="true" >
            <fileset dir="${smoketest_temp}"/>
        </move>
    </target>

堆栈跟踪:

  <testcase classname="com.adobe.gibsontests.SmokeTestOSGIosgi" name="initializationError" time="0.004">
    <error message="No TestContainer implementation in Classpath" type="org.ops4j.pax.exam.TestContainerException">org.ops4j.pax.exam.TestContainerException: No TestContainer implementation in Classpath
    at org.ops4j.pax.exam.spi.PaxExamRuntime.sanityCheck(PaxExamRuntime.java:266)
    at org.ops4j.pax.exam.spi.PaxExamRuntime.getTestContainerFactory(PaxExamRuntime.java:79)
    at org.ops4j.pax.exam.spi.reactors.ReactorManager.createsTestContainerFactory(ReactorManager.java:325)
    at org.ops4j.pax.exam.spi.reactors.ReactorManager.createReactor(ReactorManager.java:302)
    at org.ops4j.pax.exam.spi.reactors.ReactorManager.prepareReactor(ReactorManager.java:181)
    at org.ops4j.pax.exam.junit.impl.ProbeRunner.&lt;init&gt;(ProbeRunner.java:78)
    at org.ops4j.pax.exam.junit.PaxExam.createDelegate(PaxExam.java:82)
    at org.ops4j.pax.exam.junit.PaxExam.&lt;init&gt;(PaxExam.java:73)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

有人能指出我遗漏了什么吗?

我试着在单机版上运行pax考试,但也失败了,错误是:org。ops4j。圣像牌。考试TestContainerException:没有服务组织。奥斯基。框架发射在类路径上的META-INF/services中找到FrameworkFactory

共有1个答案

谢正初
2023-03-14

由于错误消息指出“类路径中没有测试容器实现”。您需要将容器实现放到类路径上。

有两种选择。最基本的是:

1.:

<dependency>
  <groupId>org.ops4j.pax.exam</groupId>
  <artifactId>pax-exam-container-native</artifactId>
  <scope>test</scope>
</dependency>

2.:

<dependency>
  <groupId>org.ops4j.pax.exam</groupId>
  <artifactId>pax-exam-container-forked</artifactId>
  <scope>test</scope>
</dependency>

还有一些更复杂的,如卡拉夫集装箱等。

 类似资料:
  • 我正在使用以下版本的VSCode: 使用Python扩展version。唯一安装的PIP是: 我试图在vscode中调试python测试,在调试控制台中出现以下错误: 测试本身在终端上运行良好。换句话说,找不到“缺失”模块没有问题。例子: 我启动调试器的方式是单击给定测试的链接。例子: 下面是配置: 有人知道我在配置方面缺少什么吗?

  • 我正在尝试在linux上运行mocha测试 错误:未找到测试文件:“test/”npm ERR!测试失败。详见上文。 这是我的包 使用的命令:npm install--global mocha npm i并运行我正在使用npm test的测试 项目结构:

  • 问题内容: 目前,作为大学最后一年项目的一部分,我正在开发一个新的版本控制系统。这个想法是使其具有高度的适应性和可插拔性。 我们正在使用OSGi框架(Equinox实现)来管理我们的插件。我的问题是我找不到测试OSGi捆绑包的简单易用的方法。 当前,我必须使用Maven构建捆绑软件,然后执行测试工具。我正在寻找类似Eclipse的JUnit测试运行程序之类的东西,因为它可以节省大量时间。 有没有一

  • 我正在升级我们现有的解决方案。NET 4.6.1,并且在服务器构建期间无法运行我们的单元测试。在本地,它们按预期运行,并将框架版本翻转回。Net 4.5.1使它们在服务器上再次运行。 我得到以下错误: 未发现测试。确保安装的测试发现者 我在一个更简单的设置中重现了该问题: 使用一个C#单元测试项目和两个测试(一个失败,一个通过)的解决方案

  • 我们已经为spark编写了单元测试,在本地模式下有4个线程。 当一个接一个地启动时,例如通过intellij或sbt testOnly,每个测试都运行良好。 当用sbt测试启动时,它们会出现如下错误 我们使用的是一个带有多个子项目的sbt项目,其定义如下: