用途:为 Java 项目脚手架化、改造或规范化 Rest Assured 测试模块,配套 JUnit 5、Maven 或 Gradle、共享规格(Specifications)和冒烟测试。
主要能力与流程:
- 检查:从 pom.xml、build.gradle 或 build.gradle.kts 识别构建工具;从编译设置、toolchains 或 CI 识别 Java 版本;从依赖和现有测试识别当前测试引擎;在添加 Rest Assured 前检测已有 HTTP 测试库。
- 选择基线:新项目优先 JUnit 5,除非仓库明确统一使用 TestNG;Java 17+ 可用 Rest Assured 6.x,Java 11 使用 5.5.x;仅在请求需要时添加 json-schema-validator、Testcontainers 或 WireMock。
- 脚手架:运行 python bootstrap/scripts/init_restassured_module.py --help 查看选项;按目标路径、包名、构建工具和 Java 版本运行脚本;目标 API 无 /health 时用 --smoke-path 传入稳定的冒烟端点;脚本可据 --smoke-path 派生端点相关的冒烟测试类名,也可用 --smoke-class-name 显式覆盖。生成内容包括构建文件补充、src/test/java/<package>/support/Specifications.java、src/test/java/<package>/tests/<DerivedSmokeClass>.java、src/test/resources/test.properties。除非明确允许替换,否则不覆盖用户文件。
- 验证:先运行范围最小的测试命令,例如 mvn -Dtest=OpenapiSmokeTest test 或 ./gradlew test --tests '*OpenapiSmokeTest';在编写更多测试前先修复缺失环境变量、base URL 或 TLS 配置。
- 按需阅读:搭建新模块前阅读 bootstrap-checklist.md;选择依赖或插件接线时阅读 dependency-matrix.md。
使用方式示例:
- 在 services/orders 下搭建 Maven JUnit 5 Rest Assured 测试:python bootstrap/scripts/init_restassured_module.py --path services/orders --build maven --package com.example.orders --java-version 17
- 改造 Gradle Java 11 仓库且不强制升级 Java:python bootstrap/scripts/init_restassured_module.py --path . --build gradle --package com.example.api --java-version 11 --restassured-version 5.5.7
- 为 Swagger Petstore 搭建测试并以 OpenAPI 端点作冒烟检查:python bootstrap/scripts/init_restassured_module.py --path dry-run/petstore-tests --build maven --package com.example.petstore --java-version 17 --smoke-path /api/v3/openapi.json
- 为 /store/inventory 搭建测试并指定冒烟类名:python bootstrap/scripts/init_restassured_module.py --path services/store-tests --build maven --package com.example.store --java-version 17 --smoke-path /store/inventory --smoke-class-name StoreInventorySmokeTest
适用场景:新建或改造 Java 项目的 HTTP API 测试模块,统一测试规格与冒烟测试结构。
限制与排障:仓库仅有 JUnit 4 时需谨慎添加 JUnit Jupiter 并更新测试任务或 Surefire 版本;冒烟测试报 Connection refused 时先确认 BASE_URL 与服务启动顺序;Kotlin Gradle 脚本需生成 .kts 语法并保持仓库风格;冒烟端点错误时用 --smoke-path 指向稳定端点重跑;类名过于笼统时用 --smoke-class-name 重跑。