当前位置: 首页 > 知识库问答 >
问题:

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

公西天逸
2023-03-14

我在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/联调用例。它不是Web应用程序。

模块B是一个web应用程序。它依赖于模块B。

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

我们的Jersey rest/api代码位于模块A中。通过这种方式,无论我们部署什么模块,我们都可以访问rest/api。

到目前为止,我已经成功地在模块C中配置了Maven FailSafe插件,以便在运行顶层(父级)pom时支持tomcat实例。xml(即:mvn验证)。

然而,模块C无法看到来自模块A的集成测试。我已经尝试配置maven jar插件(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运行模块C故障保护插件时,有谁能帮我弄清楚如何在模块A中运行这些集成测试吗。

注:集成测试名为*IT。java,所以它会被故障保护插件接受。

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

提前非常感谢。

共有1个答案

高山
2023-03-14

如果模块C包含对带有测试分类符的a的依赖关系,则可以在<代码>

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插件配置,我最终得到了一个空的测试存档。我不得不将模式更改为<代码>

 类似资料:
  • 我有这样一个多模块maven项目: my-parent --my-domain --my-service --my-app<<<这是一个Spring Boot模块 我想直接从父模块运行命令,而不必先cd到'my-app'目录中。 我认为这与的配置有关,但我似乎不能正确处理它。 我尝试了以下方法: > 使用以及在my-app的plugins部分中包含的的默认配置。 从父级运行会导致:

  • 我不明白为什么这不起作用;似乎使用spring boot和angular作为maven模块的教程最终直接用java运行,所以这个问题不存在...但我想这应该还管用吧? Spring启动模块POM 棱角聚甲醛

  • 问题内容: 我正在构建一个Java程序来自动化服务器端的过程。通常,我cd到Desktop / GIT /并使用此maven命令“ mvn integration- test -DskipTests -P Interactive -e”。 我正在构建一个Java程序,并且试图运行该命令行,但到目前为止我没有成功。 到目前为止,这是代码: 问题答案: 我设法使用以下代码运行mvn :(我使用此命令:

  • 我创建了一个测试运行程序,它创建了一个动态的testng xml,这样我就可以运行带有参数的测试。所有@Test方法都在相关类中(例如LoginTest.class)。它在IDE上运行得非常完美,但在Maven(mvn测试)下,它只打印构建成功,而不运行任何测试… POM. xml中的maven-surefire插件: 我的TestRunner课程: 我的LoginTest类:

  • 我有一个结构如下的项目: Maven-as-submodule-只是一个分级项目;graph-gen是gradle项目中的Maven模块(不是子模块) 我的目标是从gradle任务运行command:。所以我写了一些: null 任务runMvnInterfaceGenerator(类型:Exec){dependsOn“copy graphstoGenerator”workingDir“./gra