如何在Gradle项目中运行@QuarkusIntegrationTest集成测试
Quarkus集成测试Gradle配置及运行指南
1. 基础前提
确保你的build.gradle已经配置了Quarkus官方Gradle插件:
plugins { id 'java' // 替换为你实际使用的Quarkus版本号 id 'io.quarkus' version '3.15.1' }
2. 配置集成测试源集
我们通常会把集成测试代码和单元测试代码拆分存放,首先声明集成测试的源码和资源目录:
sourceSets { integrationTest { // 集成测试代码存放路径 java.srcDir 'src/integrationTest/java' // 集成测试配置文件存放路径 resources.srcDir 'src/integrationTest/resources' // 继承主源码、单元测试的编译和运行依赖 compileClasspath += sourceSets.main.output + sourceSets.test.output runtimeClasspath += sourceSets.main.output + sourceSets.test.output } }
3. 定义集成测试执行任务
添加专门的Gradle任务用来执行@QuarkusIntegrationTest标注的测试用例:
task integrationTest(type: Test) { testClassesDirs = sourceSets.integrationTest.output.classesDirs classpath = sourceSets.integrationTest.runtimeClasspath // 必须先构建Quarkus产物再执行测试 dependsOn quarkusBuild // 启用JUnit平台运行测试 useJUnitPlatform() // 可选:自定义测试报告输出路径 reports { html.required = true html.destination = file("${buildDir}/reports/integrationTest") } } // 可选配置:执行./gradlew check时自动运行集成测试 check.dependsOn integrationTest
4. 编写OpenAPI校验测试示例
在src/integrationTest/java目录下新建测试类,示例如下:
import io.quarkus.test.junit.QuarkusIntegrationTest; import io.restassured.RestAssured; import org.junit.jupiter.api.Test; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.notNullValue; @QuarkusIntegrationTest public class OpenApiGenerationIT { @Test public void verifyOpenApiYamlContent() { // Quarkus默认OpenAPI端点为/q/openapi RestAssured.given() .when().get("/q/openapi") .then() .statusCode(200) // 校验YAML结构符合预期 .body("openapi", notNullValue()) .body("paths", notNullValue()) // 可自行添加自定义规则校验,比如校验指定接口存在 .body(containsString("/your/custom/api/path")); } }
5. 运行方式
- 单独运行所有集成测试:执行命令
./gradlew integrationTest - 同步运行单元测试和集成测试:执行命令
./gradlew check
标注了
@QuarkusIntegrationTest的测试会直接针对构建生成的Quarkus正式产物运行,而非dev模式的临时应用,测试结果和生产运行效果完全一致。
内容的提问来源于stack exchange,提问作者Sasha Shpota
相关产品推荐
相关产品推荐

