使用 Maven surefire 插件包含测试

我正在使用Maven来构建我的项目。我目前将测试拆分为不同的层次结构:

  • 单元测试 ->src/test/java/**/*Test.java
  • 集成测试 ->src/test-integration/java/**/*Test.java
  • 外部测试 ->src/test-external/java/**/*Test.java

这是我的部分:maven-surefire-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven-surefire-plugin.version}</version>
    <configuration>
        <includes>
            <include>src/test/java/**/*Test.java</include>
        </includes>
    </configuration>
</plugin>

上述指令不起作用。当我运行时不执行任何测试:<include>mvn clean test

我试过了,它运行了所有的测试 - 单元,集成和外部。但是,对于默认测试套件,我只想运行单元测试。**/*Test.java

如何在 Maven 中完成此操作?

裁判:

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>

答案 1

您应该将单元测试和集成测试用例分开。单元测试可以使用Surefire插件运行,并且有一个名为Failsafe的单独插件用于运行集成测试。

Surefire 插件默认运行名称以 .诀窍是用不同的名称命名集成测试文件,比如说。故障安全插件会将它们标识为集成测试。*Test.java*IT.java

您可以在此答案中找到示例用法 - 如何运行 Maven 集成测试

此外,如果您遵循默认设置(例如将测试用例文件放在文件夹中并将测试文件命名为.)则不必单独配置Surefire插件。src/test/java*Test.java


答案 2

这是因为路径是相对于默认为 = src/test/java 的路径。试试这个<include><testSourceDirectory>${project.build.testSourceDirectory}

<include>**/*Test.java</include>

推荐