在Eclipse RCP Tycho项目中使用Mockito和JUnit需要哪些依赖项

在Eclipse RCP Tycho项目中使用Mockito和JUnit需要哪些依赖项,junit,osgi,tycho,hamcrest,tycho-surefire-plugin,Junit,Osgi,Tycho,Hamcrest,Tycho Surefire Plugin,这是我当前的测试片段: eclipse测试插件 org.junit com.springsource.org.junit 4.7.0 使用以下插件配置: org.eclipse.tycho 第谷surefire插件 ${tycho.version} p2可安装单元 org.eclipse.equinox.ds p2可安装单元 org.apache.felix.gogo.shell junit47 -ea 我使用POM优先的方法来解决依赖关系: 考虑 上面的JUnit版本是我能找到的唯一一

这是我当前的测试片段:

eclipse测试插件 org.junit com.springsource.org.junit 4.7.0 使用以下插件配置:


org.eclipse.tycho
第谷surefire插件
${tycho.version}
p2可安装单元
org.eclipse.equinox.ds
p2可安装单元
org.apache.felix.gogo.shell
junit47
-ea
我使用POM优先的方法来解决依赖关系:

考虑
上面的JUnit版本是我能找到的唯一一个打包成包的版本

问题是我找不到一个匹配项,它允许我在一个片段中同时使用JUnit和Mockito

我的共同问题是:

  • Maven Central的Mockito内核需要Hamcrest 1.0-2.0,但JUnit包在版本4.7.0中导出Hamcrest
  • Springsource存储库中没有可用的junit dep捆绑包
  • 当我添加另一个Hamcrest包时,JUnit(4.7.0)和Hamcrest包(1.3)导出的版本之间存在版本冲突

我希望避免从JUnit、Hamcrest和Mockito创建自己的包。

我发现JUnit、Hamcrest和Mockito的包装包可以很好地协同工作

对于(当前)最新的Orbit发行版,包括JUnit 4.11、Hamcrest 1.1(Hamcrest Core版本为1.3)和Mockito 1.8.4,只需在POM中添加以下代码片段:


轨道开普勒
http://download.eclipse.org/tools/orbit/downloads/drops/R20130517111416/repository/
p2
在Eclipse Orbit的包装中,
org.junit
包导出包的一部分
org.hamcrest.core
。然而,Mockito需要
org.hamcrest.core
包的完整内容。为了防止Mockito和JUnit包之间的意外连接,导出被标记为一个强制属性。不幸的是,(Tycho使用p2进行依赖项解析),因此您需要给片段的依赖项解析(使用Mockito)一个额外的提示:


org.eclipse.tycho
目标平台配置
${tycho版本}
eclipse插件
org.hamcrest
0.0.0

这确保在依赖项解析期间使用
org.hamcrest
捆绑包,并且可以成功连接Mokito的导入。

请您详细说明我将在何处以及如何声明这些依赖项。如果我通常在master.pom中声明它们,maven会抱怨它需要一个groupId(我找不到)。我可以补充一点,我使用一个目标定义使tycho和eclipse协同工作。让我们先尝试让tycho构建工作:只需在清单中声明包导入/捆绑需要,tycho就会从Orbit存储库中选择捆绑包。(如何将Mockito/Hamcrest/JUnit放入目标文件将是一个很好的单独问题。)这让我大吃一惊:)我现在看到的是,tycho从新添加的存储库下载了工件(而eclipse仍在抱怨缺少的东西)。测试正在运行。我已将orbit存储库添加到我的目标定义文件中,现在eclipse将获取此信息(在重新启动eclipse、将目标平台切换回force等…)@oberlies我希望我能给你更多的投票!您知道org.assertJ fluet断言是否有类似的更新站点吗?再次感谢!Tycho从不首先使用POM,这意味着POM是依赖项声明的主要来源。在Tycho中,依赖项总是从清单中解析。使用
pomDependencies=考虑
只需激活一种机制,将Maven存储库中的包添加到。(通常,这些捆绑包是使用POM优先方法构建的,即使用maven捆绑包插件。)