如何从父mvn模块运行测试?

时间:2017-04-18 00:10:01

标签: java maven maven-failsafe-plugin

我在mvn中有以下结构。

| pom.xml (parent)
|
|
+----- module A (common classes)
|      |   pom.xml
|      |
|      \---src
|          +---main
|          |
|          \---test
|              +---junit
|              |
|              \---integration
|
+----- module B (web app)
|      |   pom.xml
|      |
|      \---src
|          +---main
|
+----- module C (web app)
|      |   pom.xml 
|      |
|      \---src
|          +---main

模块A是所有后续模块(B,C,...)继承的模块。该模块具有通用功能和junit /集成测试用例。它不是一个网络应用程序。

模块B是一个网络应用程序。它依赖于模块B.

模块C是一个网络应用程序。它依赖于模块B.

我们的Jersey rest / api代码存在于模块A中。这样无论我们部署什么模块,我们总是可以访问rest / api。

到目前为止,我已经设法在模块C中配置Maven FailSafe插件,以便在运行top(父)pom.xml(即:mvn verify)时站起来一个tomcat实例。

但是,模块C无法看到模块A的集成测试。我已尝试配置maven-jar-plugin(http://maven.apache.org/guides/mini/guide-attached-tests.html)。

在模块A的pom.xml中,我有:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    <executions>
      <execution>
        <goals>
          <goal>test-jar</goal>
        </goals>
        <configuration>
          <includes>
            <include>**/*IT.java</include>
          </includes>
        </configuration>
      </execution>
    </executions>
  </plugin>

在模块C中我有:

    <dependency>
        <groupId>groupId</groupId>
        <artifactId>SCCommon</artifactId>
        <type>test-jar</type>
        <classifier>tests</classifier>
        <version>9.1.0-SNAPSHOT</version>
        <scope>test</scope>
   </dependency>

当mvn运行Module C failafe插件时,任何人都可以帮我弄清楚如何在Modula A中运行这些集成测试。

注意:集成测试被命名为* IT.java,因此它被故障安全插件获取。

有没有其他方法可以做到这一点,或者甚至使用正确的插件?

提前多多感谢。

1 个答案:

答案 0 :(得分:0)

如果模块C包含对带有 tests 类文件的A的依赖关系,则可以在maven-failsafe-plugin(自2.15)配置的<dependenciesToScan>属性中引用该依赖关系。 / p>

http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#dependenciesToScan

<dependency>
    <groupId>com.group</groupId>
    <artifactId>A</artifactId>
    <version>1.0-SNAPSHOT</version>
    <classifier>tests</classifier>
</dependency>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.15</version>
    <executions>
        <execution>
            <id>it</id>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <dependenciesToScan>
            <dependency>com.group:A</dependency>
        </dependenciesToScan>
    </configuration>
</plugin>

使用你的maven-jar-plugin配置我得到了一个空的测试档案。我不得不将模式更改为<include>**/*IT.class</include>