这是我目前的测试片段:
<packaging>eclipse-test-plugin</packaging>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>com.springsource.org.junit</artifactId>
<version>4.7.0</version>
</dependency>
</dependencies>
使用以下插件配置:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<dependencies>
<dependency>
<type>p2-installable-unit</type>
<artifactId>org.eclipse.equinox.ds</artifactId>
</dependency>
<dependency>
<type>p2-installable-unit</type>
<artifactId>org.apache.felix.gogo.shell</artifactId>
</dependency>
</dependencies>
<providerHint>junit47</providerHint>
<argLine>-ea</argLine>
</configuration>
</plugin>
我使用POM优先方法来解决依赖关系:
<pomDependencies>consider</pomDependencies>
上面的JUnit版本是我能找到的唯一一个打包为捆绑包的版本。
问题是我找不到允许我在片段中一起使用JUnit和Mockito的匹配项。
我的常见问题是:
我想避免从JUnit,Hamcrest和Mockito创建我自己的包。
答案 0 :(得分:17)
我发现来自Eclipse Orbit的JUnit,Hamcrest和Mockito的包装器捆绑在一起工作。
对于(当前)最新的Orbit版本,包括JUnit 4.11,Hamcrest 1.1(在1.3版本中使用Hamcrest Core)和Mockito 1.8.4,只需将以下代码片段添加到您的POM中:
<repositories>
<repository>
<id>orbit-kepler</id>
<url>http://download.eclipse.org/tools/orbit/downloads/drops/R20130517111416/repository/</url>
<layout>p2</layout>
</repository>
</repositories>
在Eclipse Orbit的包装器中,org.junit
包导出包org.hamcrest.core
的部分内容。但是,Mockito需要org.hamcrest.core
包的完整内容。为了防止Mockito和JUnit捆绑包之间的意外连接,导出标记有强制属性。不幸的是,p2 doesn't take these into account(和Tycho使用p2进行依赖项解析),所以你需要给你的片段的依赖性解析(使用Mockito)一个额外的提示:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<dependency-resolution>
<extraRequirements>
<requirement>
<type>eclipse-plugin</type>
<id>org.hamcrest</id>
<versionRange>0.0.0</versionRange>
</requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
</plugin>
这确保在依赖项解析期间使用org.hamcrest
包,并且可以成功连接Mokito的导入。