测试类在依赖模块中扩展测试类

2022-09-01 18:39:49

我在一个模块中有一个测试类,该类在其一个依赖项模块中扩展了另一个测试类。如何将依赖项的测试代码导入到依赖项模块的测试范围中?

对于文盲,我有两个模块,“模块一”是“模块二”的依赖关系。 是 的子类。SubTestCaseTestCase

module-one
          \src\test\java\com\example\TestCase.java
module-two
          \src\test\java\com\example\SubTestCase.java

但是构建失败了,因为“模块一”的测试代码没有被导入到“模块二”中,只是主代码。


答案 1

您可以使用 maven-jar-plugin 的 test-jar 目标将测试代码部署为其他工件。它将附加到项目并与分类器测试一起部署。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>test-jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

然后,其他项目可以通过在依赖项中声明测试分类器来引用测试 jar。

<dependency>
  <groupId>name.seller.rich</groupId>
  <artifactId>foo</artifactId>
  <version>1.0.0</version>
  <classifier>tests</classifier>
  <scope>test</scope>
</dependency>

答案 2

关于富豪卖家的答案:使用已经过时,请参阅用户指南<classifier>tests</classifier>

我正在使用maven 2.2.1和maven-jar-plugin 2.2,它需要切换而不是.<type>test-jar</type><classifier>tests</classifier>

请注意,测试 jar 不是可传递的,因此您可能需要显式添加它们。

<project>
    ...
    <dependencies>
        <dependency>
            <groupId>name.seller.rich</groupId>
            <artifactId>foo</artifactId>
            <version>1.0.0</version>
            <type>test-jar</type>
            <scope>test</scope>
         </dependency>
    </dependencies>
     ...
</project>

更新以下迈克·索科洛夫评论:
用户公会的 maven 3 更新于 2014-03-28 看到上面的链接说

请注意,本指南的以前版本建议使用<分类器>测试</分类器>而不是<type>test-jar</type>。虽然这目前适用于某些情况,但如果调用了安装前的生命周期阶段,则在测试 JAR 模块和任何使用者的反应堆构建期间,它都不能正常工作。在这种情况下,Maven 不会从反应堆构建的输出中解析测试 JAR,而是从本地/远程存储库解析测试 JAR。显然,存储库中的 JAR 可能已过时或完全丢失,从而导致构建失败(参见 MNG-2045)。


推荐