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

如何使用Gradle针对运行中的应用执行QuarkusIntTest?

解决Quarkus Gradle集成测试连接运行中应用失败的问题

针对运行中的Quarkus应用执行集成测试时,Maven与Gradle的参数传递和任务配置存在细节差异,以下是修复Gradle命令执行失败的方案:

1. 确保命令行参数正确传递给测试JVM

Gradle默认不会将-D开头的系统属性传递给测试任务的JVM进程,需通过以下两种方式处理:

方式A:使用--system-prop参数直接传递

执行命令时改用--system-prop(缩写-D也可,但需配合任务配置):

./gradlew quarkusIntTest --system-prop quarkus.http.test-host=1.2.3.4 --system-prop quarkus.http.test-port=4321

方式B:配置Gradle任务传递系统属性

在build.gradle(或build.gradle.kts)中添加全局测试任务配置,让所有测试任务继承系统属性:

// Groovy DSL
tasks.withType(Test) {
    systemProperties System.properties
}
// Kotlin DSL
tasks.withType<Test> {
    systemProperties(System.getProperties().mapKeys { it.key.toString() })
}

配置完成后,即可使用原命令执行:

./gradlew quarkusIntTest -Dquarkus.http.test-host=1.2.3.4 -Dquarkus.http.test-port=4321

2. 显式配置quarkusIntTest任务属性

如果上述方法仍不生效,可直接在build.gradle中为quarkusIntTest任务指定测试主机和端口的系统属性,支持命令行动态覆盖:

// Groovy DSL
quarkusIntTest {
    systemProperty 'quarkus.http.test-host', System.getProperty('quarkus.http.test-host', 'localhost')
    systemProperty 'quarkus.http.test-port', System.getProperty('quarkus.http.test-port', '8081')
}
// Kotlin DSL
tasks.quarkusIntTest {
    systemProperty("quarkus.http.test-host", System.getProperty("quarkus.http.test-host", "localhost"))
    systemProperty("quarkus.http.test-port", System.getProperty("quarkus.http.test-port", "8081"))
}

3. 额外检查项

  • 确认测试类使用了@QuarkusIntegrationTest注解,该注解用于标记针对运行中应用的集成测试
  • 验证目标应用确实在1.2.3.4:4321正常运行,无防火墙拦截、端口占用等问题
  • 确保Quarkus Gradle插件版本为最新稳定版,旧版本可能存在属性兼容问题

内容的提问来源于stack exchange,提问作者Guilherme Torres Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:36:27