rest-assured

v2026.09.24

REST Assured Java library for testing REST APIs. Covers HTTP requests, JSON/XML validation, and Spring Boot integration. USE WHEN: user mentions "rest assured", "api test java", "rest api test", asks about "given when then", "RestAssured", "HTTP test", "JSON validation" DO NOT USE FOR: Unit tests - use `junit`; E2E browser tests - use Selenium; WebSocket testing - use dedicated tools; Non-Java projects - use language-specific HTTP clients

GitHub
安装命令
npx skhub add claude-dev-suite/rest-assured
Markdown
SKILL.md

REST Assured - Quick Reference

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: rest-assured for comprehensive documentation.

When NOT to Use This Skill

  • Unit Tests - Use junit with Mockito for isolated tests
  • E2E Browser Tests - Use Selenium or Playwright
  • WebSocket Testing - Use dedicated WebSocket testing tools
  • Non-Java Projects - Use language-specific HTTP clients
  • GraphQL APIs - Consider GraphQL-specific testing tools

Pattern Essenziali

GET Request

given()
    .baseUri("http://localhost:8080")
    .contentType("application/json")
.when()
    .get("/api/v1/users/1")
.then()
    .statusCode(200)
    .body("name", equalTo("John"));

POST Request

given()
    .contentType("application/json")
    .body("""
        {"name": "John", "email": "john@example.com"}
        """)
.when()
    .post("/api/v1/users")
.then()
    .statusCode(201)
    .body("id", notNullValue());

Spring Boot Integration

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class UserApiTest {
    @LocalServerPort
    private int port;

    @BeforeEach
    void setUp() {
        RestAssured.port = port;
    }

    @Test
    void shouldGetUsers() {
        given()
        .when().get("/api/v1/users")
        .then().statusCode(200);
    }
}

Authentication

// Bearer Token
given().header("Authorization", "Bearer " + token)

// Basic Auth
given().auth().basic("user", "pass")

Hamcrest Matchers Comuni

MatcherUso
equalTo(value)Exact match
notNullValue()Not null
hasSize(n)Collection size
containsString(str)String contains

Anti-Patterns

Anti-PatternWhy It's BadSolution
Hardcoding base URINot portable across environmentsUse RestAssured.baseURI or config
Not setting contentTypeRequest may fail or be misinterpretedAlways set contentType for POST/PUT
Ignoring status codesSilent failuresAlways assert status code
Not using path parametersHard to read, error-proneUse {id} placeholders
Testing too much in one testHard to debugOne endpoint/scenario per test
No authentication testingSecurity gapsTest auth headers, tokens
Not validating response schemaAPI contract violationsUse JSON schema validation

Quick Troubleshooting

ProblemLikely CauseSolution
"Connection refused"Server not runningStart server, verify port
"Expected status 200 but was 500"API error or wrong requestCheck server logs, validate request body
"Cannot deserialize JSON"Wrong content type or body formatVerify Content-Type header, check JSON
Authentication failsMissing/wrong tokenCheck Authorization header
TimeoutSlow API or network issueIncrease timeout or investigate performance
"Path not found"Wrong URL or methodVerify endpoint exists, check HTTP method

Reference Documentation

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

skills/testing/rest-assured

默认分支

main

最新提交

9496306

Tree SHA

fe4e2f1