emvnuel

testing-patterns

1
1
# Install this skill:
npx skills add emvnuel/SKILL.md --skill "testing-patterns"

Install specific skill from multi-skill repository

# Description

REST integration testing patterns with JUnit 5, Mockito, RestAssured. Use when writing integration tests that mock external dependencies, use Testcontainers/H2 for databases, and test endpoints with raw JSON bodies.

# SKILL.md


name: testing-patterns
description: REST integration testing patterns with JUnit 5, Mockito, RestAssured. Use when writing integration tests that mock external dependencies, use Testcontainers/H2 for databases, and test endpoints with raw JSON bodies.


REST Integration Testing Patterns

Write integration tests for REST endpoints using Quarkus test framework.


Quick Start

Basic REST integration test with RestAssured:

@QuarkusTest
class OrderResourceTest {

    @Test
    void shouldCreateOrder() {
        given()
            .contentType(ContentType.JSON)
            .body("""
                {
                    "customerId": "cust-123",
                    "items": [{"productId": "prod-1", "quantity": 2}]
                }
                """)
        .when()
            .post("/orders")
        .then()
            .statusCode(201)
            .body("id", notNullValue())
            .body("status", equalTo("PENDING"));
    }
}

Core Patterns

REST Integration Tests

Use: Test full request/response cycle through REST layer
Stack: @QuarkusTest + RestAssured
Cookbook: rest-integration-tests.md

Mocking External Dependencies

Use: Isolate tests from external HTTP services, queues, etc.
Stack: @InjectMock with Mockito
Cookbook: mocking-dependencies.md

Database with Testcontainers

Use: Test against real PostgreSQL/MySQL
Stack: Quarkus DevServices or @Testcontainers
Cookbook: testcontainers-setup.md

Database with H2

Use: Fast in-memory alternative when container not needed
Stack: H2 with test profile
Cookbook: h2-setup.md

Raw JSON Request Bodies

Use: Test with exact JSON payloads (no object serialization)
Stack: Text blocks + JsonPath assertions
Cookbook: json-request-bodies.md

Test Structure & Lifecycle

Use: Organize tests with JUnit 5 features
Stack: @Nested, @BeforeEach, naming conventions
Cookbook: test-structure.md


Quick Reference

Pattern When to Use Key Annotation/Tool
REST Integration Test endpoint behavior @QuarkusTest
Mock Dependencies Isolate from external services @InjectMock
Testcontainers Need real database behavior DevServices / Container
H2 In-Memory Fast tests, simple queries %test profile
Raw JSON Bodies Exact payload control Text blocks
Nested Test Classes Group related scenarios @Nested

Cookbook Index

Core Testing: REST Integration Tests Β· Test Structure

Dependencies: Mocking Dependencies

Database: Testcontainers Setup Β· H2 Setup

Request/Response: JSON Request Bodies

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.