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

Cucumber默认发布地址是什么?开启publish后Jenkins报ConnectException

Cucumber-jvm 发布报告连接超时问题解答

问题背景

使用Cucumber-jvm 6.11.0生成测试报告,本地写入如下junit-platform.properties配置运行正常:

cucumber.publish.enabled=true
cucumber.plugin=pretty, json:build/reports/cucumber/report.json
cucumber.junit-platform.naming-strategy=long   

相同配置在Jenkins运行时抛出如下连接超时异常:

java.lang.RuntimeException: java.net.ConnectException: Connection timed out (Connection timed out)
    at io.cucumber.core.plugin.MessageFormatter.writeMessage(MessageFormatter.java:36)
    at io.cucumber.core.eventbus.AbstractEventPublisher.send(AbstractEventPublisher.java:51)
    at io.cucumber.core.eventbus.AbstractEventBus.send(AbstractEventBus.java:12)
    at io.cucumber.core.runtime.SynchronizedEventBus.send(SynchronizedEventBus.java:47)
    at io.cucumber.core.runtime.CucumberExecutionContext.emitTestRunFinished(CucumberExecutionContext.java:102)
    at io.cucumber.core.runtime.CucumberExecutionContext.finishTestRun(CucumberExecutionContext.java:74)
    at io.cucumber.junit.platform.engine.CucumberEngineExecutionContext.finishTestRun(CucumberEngineExecutionContext.java:98)
    at io.cucumber.junit.platform.engine.CucumberEngineDescriptor.after(CucumberEngineDescriptor.java:37)
    at io.cucumber.junit.platform.engine.CucumberEngineDescriptor.after(CucumberEngineDescriptor.java:10)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:149)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:149)
    at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
...
Caused by: java.net.ConnectException: Connection timed out (Connection timed out)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1963)
    at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1958)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1957)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1525)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
    at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:329)
    at io.cucumber.core.plugin.UrlOutputStream.getResponseBody(UrlOutputStream.java:111)
    at io.cucumber.core.plugin.UrlOutputStream.sendRequest(UrlOutputStream.java:83)

经测试只要开启cucumber.publish.enabled=true就会触发该问题,下面针对相关疑问解答:

问题解答

1. 发布功能的默认上传地址

开启cucumber.publish.enabled=true后,Cucumber默认会将测试报告上传到官方的公开报告托管平台,确实会通过HTTPS发起HTTP请求上传报告数据。你本地配置了代理可以正常访问公网所以运行正常,Jenkins环境一般处于内网,没有配置公网出口代理,因此会触发连接超时,你的推测完全正确。

2. 仅生成本地报告仍触发超时的原因

发布功能是独立的开关逻辑,和本地报告生成配置互不干扰。只要你显式开启了cucumber.publish.enabled=true,不管有没有配置cucumber.plugin生成本地json、html报告,Cucumber都会在测试运行结束后自动触发报告上传逻辑,因此即使你只需要本地报告,只要开了这个开关就会发起公网请求,自然会出现连接超时错误。

解决方案

如果不需要将报告上传到官方公开平台,直接将配置修改为cucumber.publish.enabled=false即可,该配置不会影响本地报告的正常生成,Jenkins上也不会再出现连接超时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:57:00