6

当测试的 pom 将测试列为依赖项时,有谁知道如何解决最近的 M2eclipse 插件无法在 junit 启动器的类路径中包含依赖项目 test-classes 目录的问题?

代表步骤

  • 创建到 pom 项目 providerProj、userProj
  • 在 providerProj 创建 TestUtils 类并存储其测试
  • 设置 userProj 依赖于提供者的测试分类工件(provider-test.jar)
  • 添加从 providerProj 调用 TestUtils 类的 userProj 测试

在命令行上,一切都按预期工作。通过测试类路径找到的 TestUtils 类。

  • 将项目导入eclipse
  • 以 junit 身份运行 userProj 测试

未找到故障类。

当我们检查测试的类路径时,看不到 providerProj/test-classes 文件夹。如果我们关闭 providerProj 并重新运行,它会工作,并且我们会在类路径上看到 provider-test.jar。

useProject
<dependency>
   <groupId>workspacetest</groupId>
   <artifactId>providerProj</artifactId>
   <classifier>test</classifier>
</dependency>

我们可以手动编辑启动器并添加必要的文件夹,但这并不理想。我可能能够说服 m2eclipse 转储 src 并将输出测试到目标/类中,这将掩盖问题并为纠缠代码打开我的大门。我可以分叉 m2eclipse 并更改句柄以假设测试分类器 dep 意味着包括工作区分辨率目标/测试类。

你知道解决问题的方法吗?

谢谢

彼得

4

2 回答 2

2

不久前我想做类似的事情。问题是 Eclipse 和 Maven 处理构建的方式不同,而现在 Eclipse 不能很好地处理 Maven 的分类工件概念。这是我在这个 Eclipse 错误报告中找到的注释的解释。

我能够找到一种解决方法,使 Eclipse 和 Maven 都能正常工作。我将此添加到需要分类 jar 中的项目的 POM 中。(注意,我这样做是为了测试资源,而不是测试源,所以如果我没有下面的配置,你可能需要调整......)

<profile>
  <!-- Contents of this profile only needed to make this project work in Eclipse. -->
  <id>m2e</id>
  <activation>
    <property>
      <name>m2e.version</name>
    </property>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>include-test-source-eclipse</id>
            <phase>generate-test-sources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>../myOtherProj/src/test/java</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

将 build-helper 插件放在配置文件中可确保它仅在 Eclipse 中运行,而不是作为正常 Maven 构建的一部分。它不漂亮,但至少在 Eclipse Juno 和 m2e 1.3.1.20130219-1424 中有效。

我在配置方面遇到的唯一问题是,有时 Eclipse 似乎找不到我在提供程序项目中所做的更改。修复是在提供者项目和依赖它的任何项目上运行 Maven --> 更新项目。我没有经常更换资源,这对我来说不是一件大事。

于 2013-10-04T16:58:25.110 回答
1

你需要使用<classifier>tests</classifier>.

顺便说一句,http ://maven.apache.org/guides/mini/guide-attached-tests.html不鼓励使用测试分类器,<type>test-jar</type>这是首选。

于 2013-10-04T10:23:20.273 回答