JUnit插件测试忽略Eclipse Neon中的目标平台

时间:2016-05-11 08:29:45

标签: java eclipse junit eclipse-plugin

我在使用Eclipse Neon M7让JUnit插件测试工作时遇到了一些问题,我真的很喜欢那些使用测试的人的输入(必须有某人,对吗?)

每当我开始在Eclipse Luna中运行的测试(但didn't in Mars,我认为这是一个错误)并继续使用Tycho时我得到以下异常:

!SESSION 2016-05-11 10:25:41.456 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_73
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Framework arguments:  -version 3 -port 60297 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames org.acme.test.test.core.ActivatorTest -application org.eclipse.pde.junit.runtime.uitestapplication -testApplication org.eclipse.ui.ide.workbench -testpluginname test.core
Command-line arguments:  -os win32 -ws win32 -arch x86 -consoleLog -version 3 -port 60297 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames org.acme.test.test.core.ActivatorTest -application org.eclipse.pde.junit.runtime.uitestapplication -testApplication org.eclipse.ui.ide.workbench -data C:\workspaces\MyWorkspace/../junit-workspace -dev file:C:/workspaces/MyWorkspace/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os win32 -ws win32 -arch x86 -consoleLog -testpluginname test.core

!ENTRY org.eclipse.pde.junit.runtime 4 0 2016-05-11 10:25:42.373
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.pde.junit.runtime [81]
  Unresolved requirement: Require-Bundle: org.eclipse.core.runtime; bundle-version="[3.11.0,4.0.0)"

    at org.eclipse.osgi.container.Module.start(Module.java:434)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)

!ENTRY org.eclipse.pde.junit.runtime 2 0 2016-05-11 10:25:42.719
!MESSAGE Could not resolve module: org.eclipse.pde.junit.runtime [81]
  Unresolved requirement: Require-Bundle: org.eclipse.core.runtime; bundle-version="[3.11.0,4.0.0)"


!ENTRY org.eclipse.osgi 4 0 2016-05-11 10:25:42.720
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: Application "org.eclipse.pde.junit.runtime.uitestapplication" could not be found in the registry. The applications available are: org.eclipse.ant.core.antRunner, org.eclipse.ui.ide.workbench, org.eclipse.help.base.infocenterApplication, org.eclipse.help.base.helpApplication, org.eclipse.help.base.indexTool, org.acme.test.rxp.rxpdemo, org.eclipse.equinox.app.error.
    at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:248)
    at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

显然现在这不是Eclipse的错误,但我做错了。没有迹象表明测试中启动了哪种插件,但从版本范围来看,我认为它再次是错误的 - 运行Eclipse实例的插件而不是工作空间目标中定义的插件平台。

仍然是启动配置声称使用了后来的目标平台。

如何配置插件单元测试以使其占用当前活动的目标平台?

1 个答案:

答案 0 :(得分:3)

这里的问题是Eclipse 4.4(Luna,2014)及以下版本的 org.eclipse.core.runtime 版本与 org.eclipse的主机Eclipse版本兼容.pde.junit.runtime 。当依赖性增加时,这随着4.5而改变。

正如您已正确断定配置指向错误的 org.eclipse.pde.junit.runtime 。这可能是由于未清除配置状态。确保正在清除配置,因此您不能使用陈旧版本运行。这样可以确保在启动配置的配置选项卡中选中在启动之前清除配置区域。

通过查看 $ {workspace_loc} /.metadata / .plugins / org.eclipse.pde.core / pde-junit / org.eclipse.equinox,您可以确切了解PDE已解析为已配置的捆绑包。 simpleconfigurator / bundles.info (在启动配置的 Configuration 选项卡中指定的位置)