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

使用OSGi启动JUnit测试时出现IllegalStateException

瞿和硕
2023-03-14
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the    org.eclipse.core.runtime bundle is resolved and started (see config.ini).
    at  org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
An error has occurred. See the log file
!ENTRY org.eclipse.osgi 2 0 2012-08-22 13:53:24.058
!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!SUBENTRY 1 org.eclipse.osgi 2 0 2012-08-22 13:53:24.059
!MESSAGE Bundle reference:file:/C:/.../plugins/org.eclipse.pde.junit.runtime_3.4.200.v20120530-1435.jar was not resolved.
!SUBENTRY 2 org.eclipse.pde.junit.runtime 2 0 2012-08-22 13:53:24.059
!MESSAGE Missing required bundle org.eclipse.core.runtime_[3.3.0,4.0.0).

我还有一个其他相同的eclipse(相同的版本等等...它来自同一个.zip存档),在这里我可以为另一个项目运行相同类型的测试。我已经检查了配置,我没有发现任何差异。因此,我目前无法理解是什么导致了这个问题。

非常感谢你能帮我解决这个问题,

共有1个答案

从阎宝
2023-03-14

看起来JUnit插件测试配置中缺少一些包。您可以使用plugins页面上的validate plug-ins函数来检查您的配置是否完成。注意:我遇到过一些使用这种方法的依赖爬行的情况,通常是来自一些“无辜的”eclipse运行时插件,这些插件一开始就不应该出现在那里。

也就是说,如果您使用DS(声明性服务),您可以消除对OSGi API的所有依赖,因此可以使用vainilla JUnit来测试代码。DS的一个特别隐藏的宝藏是服务激活签名public void activate(ComponentContext),它允许您将ComponentContext注入您的服务。使用mocks(我们使用Mockito),您可以模拟任何所需的调用,例如load资源。

同样,您可以模拟所有服务,因为它们可以通过其生命周期方法(绑定、取消绑定)注入,如OSGI-INF描述符(我们使用Equinox)中声明的:

<reference interface="com.service.itf" name="UsefulService"  cardinality="1..1" policy="static" bind="onDependencyServiceUp"  unbind="onDependencyServiceDown"/> 
 类似资料:
  • 问题内容: 到目前为止,我有两个测试。一个仅使用jUnit框架即可正常工作。另一个使用spring-test库并在每次尝试运行该异常时创建此异常。有什么想法可能导致问题吗? Error Maven test dependencies Dependency tree 问题答案: 你是否正在使用旧版本的Eclipse(Galileo或更低版本)?还是旧版的junit插件?如果是这样,则可能是问题的原因

  • 当我在Spring Boot应用程序中启用执行器时,我的JUnit测试失败并出现NullPointer异常。执行器工作正常,在我将执行器工件添加到pom.xml文件之前,测试工作正常。 好像是 是造成问题的原因 这是我的pom。xml文件: 我的测试: 错误:

  • 从2.0.6开始使用spring boot starter test会带来JUnit 4依赖性。如何使用spring boot starter test(通过Gradle),但使用JUnit 5,而不引入JUnit 4依赖项? 如果有帮助,这是Gradle的部分依赖输出: 这是我的身材。gradle文件: 添加JUnit 5依赖项并执行注释中提到的排除就完成了。测试依赖项现在如下所示:

  • 当我尝试运行一个简单的JUnit 5测试(eclipse)时,我遇到了以下错误: 这是我的: 我尝试过类似问题的一些建议,比如这个github问题和其他问题,但是没有成功。我还在学习JUnit,所以我可能会忘记一些显而易见的东西。

  • 问题出现在字段中。 在JUnit4中,一切都工作得很好,没有错误。我试图使用JUnit4中的,因为我在pom.xml中有一个junit-vintage-engine依赖项,但没有帮助。

  • 我正在尝试将测试添加到我的Spring Boot应用程序,但当我这样做时,应用程序无法启动。 我有一个自定义的jwt授权类来验证jwt,我不确定这是否会导致任何问题? 以下是我使用服务器的安全配置类: 下面是堆栈跟踪: 不知道从哪里开始,我在这里没有找到任何解决的线程。请向我解释一下,将不胜感激! 编辑:我有一个常规app.properties: 还有一个正在测试/资源: