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

Jenkins服务器上Karate测试用例执行失败,本地运行正常求助

问题解决思路

首先明确:你提到的Chrome插件和这个问题完全无关,别在这上面浪费时间。

核心原因

本地运行时,localhost:9000指向你的开发机器,Spring Boot应用就在这台机器的9000端口运行,所以测试能正常连接。但部署到Jenkins后,测试用例里的localhost是Jenkins服务器本身的localhost——如果你的Spring Boot应用没在Jenkins服务器的9000端口启动,或者部署在其他机器/容器里,自然会出现连接拒绝的错误。

具体解决方案

1. 确保Jenkins环境中Spring Boot应用已正确启动

如果应用和测试在同一Jenkins服务器部署:

  • 调整Jenkins构建流程,必须先启动Spring Boot应用,且等应用完全启动后再执行Karate测试。
    • 启动命令可后台运行:nohup java -jar your-spring-boot-app.jar &
    • 添加等待逻辑,比如用curl轮询http://localhost:9000/actuator/health(若开启了Actuator),直到返回200再执行测试,避免应用未完全启动测试就开始执行。

2. 动态配置测试的目标地址(推荐)

硬编码localhost:9000在多环境下灵活性差,建议用环境变量或Maven属性动态传递:

  • 修改Karate配置文件:
function fn() {
  // 优先读取Maven传递的属性,本地默认用localhost:9000
  var baseUrl = karate.properties['baseUrl'] || 'http://localhost:9000';
  var config = {
    baseUrl: baseUrl
  };
  // 删掉多余的proxy配置,这会导致请求走代理到目标地址,完全没必要
  // karate.configure('proxy',  { uri: 'http://localhost:9000'});
  return config;
}
  • 在Jenkins执行测试时,传递实际的应用地址:
mvn test -DbaseUrl=http://your-app-server-ip:9000

如果应用部署在Docker容器里,使用容器服务名或宿主机IP+映射端口即可。

3. 让Karate和Spring Boot应用同进程测试(最佳实践)

用Karate-JUnit5集成Spring Boot,让测试自动启动应用,无需手动管理启动流程:

  • 编写JUnit 5测试类:
import com.intuit.karate.junit5.Karate;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class KarateIntegrationTest {

    @LocalServerPort
    private int port;

    @Karate.Test
    Karate testAll() {
        return Karate.run("classpath:your-feature-file.feature")
                .systemProperty("baseUrl", "http://localhost:" + port);
    }
}
  • 这种方式会自动启动Spring Boot应用并使用随机端口,Karate测试直接连接该端口,本地和Jenkins环境都能无缝运行,无需手动启动应用。

额外注意

你的Karate配置里的proxy配置错误且多余,直接删除这行:karate.configure('proxy', { uri: 'http://localhost:9000'});——这会让请求通过代理访问目标地址,毫无必要,反而可能引发问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:43:21