10

这是我当前的测试片段:

<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-first 方法来解决依赖关系:

<pomDependencies>consider</pomDependencies>

上面的 JUnit 版本是我能找到的唯一一个,它被打包成一个包。

问题是我找不到允许我在片段中一起使用 JUnit 和 Mockito 的匹配项。

我的常见问题是:

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

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

4

1 回答 1

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 没有考虑到这些(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 的导入。

于 2013-08-08T12:00:09.910 回答