Maven 2 在Maven中共享测试代码

Maven 2 在Maven中共享测试代码,maven-2,testing,Maven 2,Testing,如何依赖Maven中另一个模块的测试代码 例如,我有两个模块: 基地 主要 我主要想要一个测试用例来扩展base中的一个基本测试类。这可能吗 更新:找到了一个,这涉及到创建一个测试jar。是的。。。只需将基本模块作为依赖项包含在Main中。如果您只继承测试代码,那么可以使用scope标记确保Maven在部署时不将代码包含在您的工件中。像这样的方法应该会奏效: <dependency> <groupId>BaseGroup</groupId>

如何依赖Maven中另一个模块的测试代码

例如,我有两个模块:

  • 基地
  • 主要
我主要想要一个测试用例来扩展base中的一个基本测试类。这可能吗


更新:找到了一个,这涉及到创建一个测试jar。

是的。。。只需将基本模块作为依赖项包含在Main中。如果您只继承测试代码,那么可以使用scope标记确保Maven在部署时不将代码包含在您的工件中。像这样的方法应该会奏效:

<dependency>
    <groupId>BaseGroup</groupId>
    <artifactId>Base</artifactId>
    <version>0.1.0-SNAPSHOT</version>
    <scope>test</scope>
</dependency>

基组
基础
0.1.0-SNAPSHOT
测试

我们解决了这个问题,我们制作了一个maven项目,测试代码为src/main/java,并向项目添加了以下依赖项:

    <dependency>
        <groupId>foo</groupId>
        <artifactId>test-base</artifactId>
        <version>1</version>
        <scope>test</scope>
    </dependency>

福
试验基地
1.
测试

感谢基本模块的建议。然而,我不想仅仅为了这个目的而创建一个新模块

在和中找到了可接受的答案。另见“”

这将使用创建来自
src/test/java
的jar代码文件,以便带有测试的模块可以共享代码

<project>
  <build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.4</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>
</project>

org.apache.maven.plugins
maven jar插件
2.4
试验罐
为了使用上面创建的附加测试JAR,只需使用指定的测试分类器指定对主工件的依赖:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project> 

...
com.myco.app
福
1.0-快照
试验罐
测试
...
我建议使用(另请参见:)。它更明确地告诉Maven您正在做什么(我发现m2eclipse和q4e都更喜欢它)


com.myco.app
福
1.0-快照
试验罐
测试

是的,那就行了,谢谢!请参阅下面我的评论,以获得我更喜欢的备选答案。我们也使用这种方法,这有点愚蠢,您被迫使用分类器或类型(对于大多数用户来说,这在Maven中几乎不是基本的)当你不需要JAR的时候,或者在本例中,你实际上只有非测试代码作为测试代码的基础。注意,使用testsIt可能会有问题,这对我非常有用,但我发现了一个问题:当我执行“install-Dmaven.test.skip=true”时,此外,还需要依赖性测试jar和进程fails@JaviPedrera即使我执行“mvn clean install-DskipTests=true”并且测试jar将被创建,它也对我有效。不errors@Allen您是否确保在打包jar时使用ServiceResultTransformer?否则,最终可能会导致服务文件相互覆盖。在那里你可以阅读更多关于它的信息。com.myco.app是否应该有一个单独的依赖项专门用于测试jar类型?还记得将测试jar添加到maven jar插件配置中:我第一次阅读这个答案时感到困惑。。。这实际上是因为它本身没有意义,你应该首先阅读下面的答案:这似乎是一个相当于下面被接受的答案组合的答案,实际上是下面更大答案的注释,现在在Maven网站上:
<dependency>
  <groupId>com.myco.app</groupId>
  <artifactId>foo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>