You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Maven集成测试阶段运行Karate测试?

在Maven集成测试阶段运行Karate测试的解决方案

当然可以在Maven的集成测试阶段运行Karate测试!你遇到的问题应该是因为Karate的Maven插件默认绑定了surefire插件的test阶段,导致测试和单元测试一起执行。下面是两种可行的解决方案,帮你把Karate测试单独放到集成测试阶段:

方法一:通过Failsafe插件接管Karate测试

这种方法的核心是让surefire跳过Karate测试,同时让failsafe在集成测试阶段执行它们:

  1. 配置Surefire插件,排除Karate测试类
    在你的pom.xml中添加maven-surefire-plugin的配置,排除所有Karate测试类(通常命名为*KarateTest.java):

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>3.1.2</version>
      <configuration>
        <excludes>
          <exclude>**/*KarateTest.java</exclude>
        </excludes>
      </configuration>
    </plugin>
    
  2. 配置Failsafe插件,执行Karate测试
    添加maven-failsafe-plugin的配置,绑定到integration-test和verify阶段,并包含Karate测试类:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-failsafe-plugin</artifactId>
      <version>3.1.2</version>
      <executions>
        <execution>
          <goals>
            <goal>integration-test</goal>
            <goal>verify</goal>
          </goals>
          <configuration>
            <includes>
              <include>**/*KarateTest.java</include>
            </includes>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

完成配置后,执行mvn verify就会先运行单元测试(由surefire处理),再运行Karate集成测试(由failsafe处理);如果只想单独跑集成测试,执行mvn integration-test即可。

方法二:调整Karate插件的阶段绑定

另一种方式是直接修改Karate Maven插件的绑定阶段,让它默认在integration-test阶段执行,同时确保surefire不扫描Karate测试类:

<plugin>
  <groupId>com.intuit.karate</groupId>
  <artifactId>karate-maven-plugin</artifactId>
  <version>1.4.1</version> <!-- 使用你项目对应的Karate版本 -->
  <executions>
    <execution>
      <id>karate-integration-tests</id>
      <phase>integration-test</phase> <!-- 绑定到集成测试阶段 -->
      <goals>
        <goal>test</goal>
      </goals>
      <configuration>
        <!-- 可选:配置你的Karate测试路径、标签等 -->
        <features>classpath:com/yourproject/features</features>
        <tags>~@ignore</tags>
      </configuration>
    </execution>
  </executions>
</plugin>

<!-- 同样需要配置surefire排除Karate测试类 -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>3.1.2</version>
  <configuration>
    <excludes>
      <exclude>**/*KarateTest.java</exclude>
    </excludes>
  </configuration>
</plugin>

这样配置后,Karate测试会自动在integration-test阶段运行,和单元测试完全分开。

注意事项

  • 请确保使用的插件版本(Karate、Surefire、Failsafe)相互兼容,避免版本冲突。
  • 如果你的Karate测试类命名规则不同,记得调整includes/excludes中的匹配规则。

内容的提问来源于stack exchange,提问作者Adnan Sarajlic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:31:00