【问题标题】:How to prevent Maven Surefire from running Spring integration tests automatically如何防止 Maven Surefire 自动运行 Spring 集成测试
【发布时间】:2021-10-15 04:57:12
【问题描述】:

我的集成测试需要很长时间才能运行,我不希望我的开发人员每次需要编译时都浪费时间。我只希望我的集成测试运行:

  • 在我的 CI/CD 服务器中。
  • 当我告诉我的 IDE (NetBeans) 专门运行一个测试文件时。

这可能吗?我怎样才能实现它?

【问题讨论】:

标签: java spring maven integration-testing maven-surefire-plugin


【解决方案1】:

在您的 POM 中添加一个配置,在您的正常构建期间排除集成测试(假设您的集成测试被命名为 UserService_IT.java

    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <skipTests>${skip.surefire.tests}</skipTests>
      <excludes>
        <exclude>**/*_IT*.java</exclude>
      </excludes>
    </configuration>

要运行集成测试,比如说在您的 CI 构建中,添加一个配置文件并在您的管道中激活它,例如 mvn verify -Pintegration-tests

<profile>
  <id>integration-tests</id>
  <activation>
    <activeByDefault>false</activeByDefault>
    <property>
      <name>integration-tests</name>
    </property>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <configuration>
          <includes>
            <include>**/*_IT.java</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

【讨论】:

  • 对于单元测试,默认命名模式是*Test.javaTest*.java 等。请参阅maven.apache.org/surefire/maven-surefire-plugin/…。对于集成测试,默认命名模式是*IT.java 等。请参阅maven.apache.org/surefire/maven-failsafe-plugin/…,因此无需定义包含/排除,也无需定义用于跳过单元测试的属性。而且我还建议制作一个集成测试配置文件,只需使用mvn -Prun-its 激活它,而不是使用带有 activeByDefault 的配置文件...
  • 遵循配置范式的约定。
  • 你说得完全正确,我假设没有遵循约定,因为他说它们一直在运行。请注意,上面示例中的配置文件不是 activeByDefault,而是在 verifyintegration-test 上激活,因为它已被激活。
  • 否,配置文件不会仅通过-Dintegration-tests 而不是-P... 自动激活。将属性与配置文件混合。您必须手动定义..可以删除。只需定义一个可以通过-Prun-its激活的配置文件...删除激活块...
猜你喜欢
  • 2014-11-21
  • 2020-09-29
  • 2012-12-02
  • 1970-01-01
  • 2023-03-09
  • 2020-12-31
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
相关资源
最近更新 更多