Bootstrap Rest Assured
1. Inspect
- Detect the build tool from
pom.xml,build.gradle, orbuild.gradle.kts. - Detect the Java version from compiler settings, toolchains, or CI.
- Detect the active test engine from dependencies and existing tests.
- Detect existing HTTP test libraries before adding Rest Assured.
2. Choose a Baseline
- Use JUnit 5 for new work unless the repository clearly standardizes on TestNG.
- Use Rest Assured
6.xonly when Java17+is available. - Use Rest Assured
5.5.xfor Java11compatibility. - Add
json-schema-validator, Testcontainers, or WireMock only when the request requires them.
3. Scaffold
- Run
python bootstrap/scripts/init_restassured_module.py --helpto inspect options. - Run the script with the target path, package, build tool, and Java version.
- Pass a known stable smoke endpoint with
--smoke-pathwhen the target API does not expose/health. - Let the script derive an endpoint-specific smoke test class name from
--smoke-path, or override it explicitly with--smoke-class-name. - Generate:
- The build file additions.
src/test/java/<package>/support/Specifications.java.src/test/java/<package>/tests/<DerivedSmokeClass>.java.src/test/resources/test.properties.
- Skip overwriting user files unless the request explicitly allows replacement.
4. Verify
- Run the narrowest test command first.
- Use the generated smoke test class name for the first targeted run, for example
mvn -Dtest=OpenapiSmokeTest test. - Use the generated smoke test class name for Gradle, for example
./gradlew test --tests '*OpenapiSmokeTest'. - Fix missing env vars, base URLs, or TLS settings before writing more tests.
5. Read When Needed
- Read bootstrap-checklist.md before scaffolding a new module.
- Read dependency-matrix.md when choosing dependencies or plugin wiring.
6. Examples
- Input:
Set up Maven JUnit 5 Rest Assured tests under services/orders.Output:python bootstrap/scripts/init_restassured_module.py --path services/orders --build maven --package com.example.orders --java-version 17 - Input:
Retrofit this Gradle Java 11 repo without forcing a Java upgrade.Output:python bootstrap/scripts/init_restassured_module.py --path . --build gradle --package com.example.api --java-version 11 --restassured-version 5.5.7 - Input:
Bootstrap tests for Swagger Petstore, using the OpenAPI endpoint as smoke check.Output: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 - Input:
Bootstrap tests for /store/inventory and force a specific smoke class name.Output: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
7. Troubleshooting
- Problem: The repo already has JUnit 4 only. Fix: Add JUnit Jupiter carefully and update the selected test task or Surefire version.
- Problem: The smoke test fails with
Connection refused. Fix: ConfirmBASE_URLand server startup order before changing the test. - Problem: The target repo uses Kotlin Gradle scripts.
Fix: Generate Gradle output for
.ktssyntax and keep the repo's existing style. - Problem: The generated smoke test uses the wrong endpoint.
Fix: Rerun the bootstrap script with
--smoke-pathpointing at a stable endpoint exposed by the target API. - Problem: The generated smoke test class name is too generic or awkward.
Fix: Rerun the bootstrap script with
--smoke-class-nameand keep the endpoint-specific path.