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

我有一些问题让JUnit插件测试使用Eclipse Neon M7工作,我真的很喜欢那些使用测试的人的输入(必须有人 ,对吧?)。

每当我开始在Eclipse Luna中运行的测试(但在Mars中没有 ,我认为是一个bug)并继续使用Tycho时我得到以下exception:

!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实例的插件而不是工作空间目标中定义的插件平台。

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

如何配置插件unit testing以使其占用当前活动的目标平台?

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

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

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