我使用了 tycho-eclipse-plugin-archetype 中的原型(prototype)创建一个带有工作集成测试项目的简单 Eclipse 插件。但……事实并非如此。
当我作为“JUnit 插件测试”启动任何测试时,出现以下异常:
!ENTRY org.eclipse.osgi 2 0 2016-01-07 14:43:35.734
!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!SUBENTRY 1 org.eclipse.osgi 2 0 2016-01-07 14:43:35.734
!MESSAGE Bundle initial@reference:file:../../../../../../../Users/MyName/.eclipse/org.eclipse.platform_4.5.1_2043537226_win32_win32_x86_64/plugins/org.eclipse.pde.junit.runtime_3.4.500.v20150423-1241.jar/ was not resolved.
!SUBENTRY 2 org.eclipse.pde.junit.runtime 2 0 2016-01-07 14:43:35.734
!MESSAGE Missing required bundle org.eclipse.core.runtime_[3.11.0,4.0.0).
(以及其他插件的一些类似消息。)
这很奇怪,因为我的目标平台包含 org.eclipse.pde.junit.runtime
3.4.300,而不是 3.4.500,它需要 org.eclipse.core.runtime
版本 [3.3.0,4.0.0)。测试用例的运行配置与该版本一致并证明“未检测到问题。”
因此,从路径包含 "/org.eclipse.platform_4.5.1" 的事实来看,我假设它采用当前正在运行的 Eclipse 目标平台,即使工作区和运行配置中还有另一组。
如何更改 JUnit 插件测试以采用当前 Activity 的目标平台?
最佳答案
它适用于 Eclipse 4.4.2 (Luna),因此它可能是 Eclipse Mars 的“功能”之一。
添加: As explained here ,当 Eclipse 在工作区的目标平台中找不到应用程序文件夹中的插件时,它会使用它们。当工作区和 Eclipse 目标平台不同时,这会导致测试失败。解决方案是 a) 使用相同的 Eclipse 版本进行开发和项目,或者 b) 使用 Crystal 球找出缺少哪些测试插件并将它们添加到项目的目标平台。
关于java - JUnit 插件测试忽略目标平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657010/