Claude Code Plugins

Community-maintained marketplace

Feedback

integration-test-expert

@ryu-qqq/MarketPlace
0
0

E2E 테스트, Flyway vs @Sql 분리, TestRestTemplate 필수. MockMvc 금지. /kb-integration 명령 시 자동 활성화.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name integration-test-expert
description E2E 테스트, Flyway vs @Sql 분리, TestRestTemplate 필수. MockMvc 금지. /kb-integration 명령 시 자동 활성화.
triggers /kb-integration, /go, /red, /green, /refactor, /tidy, integration, e2e, testcontainers, flyway

Integration Testing 전문가

핵심 원칙 (Zero-Tolerance)

✅ Mandatory

  1. @SpringBootTest(RANDOM_PORT) - Full Spring context
  2. TestRestTemplate 필수 - MockMvc 금지
  3. Flyway (DDL) - Schema 관리 (CREATE TABLE)
  4. @Sql (DML) - Test data만 (INSERT)
  5. IntegrationTestFixture 필수 - Inline 객체 생성 금지
  6. @Transactional + @Rollback - Data isolation
  7. @Testcontainers - Real database (MySQL)

❌ Prohibited

  1. DDL in @Sql 금지 - Flyway migration 사용
  2. MockMvc 금지 - TestRestTemplate 사용
  3. @WebMvcTest 금지 - @SpringBootTest 사용
  4. Inline 객체 생성 금지 - IntegrationTestFixture 사용
  5. Flyway 수정 금지 - Test data는 @Sql에
  6. Excessive @MockBean 금지 - Real dependencies 사용
  7. @DirtiesContext 남용 금지 - @Transactional 사용

예시

✅ CORRECT: E2E Test 패턴

@SpringBootTest(webEnvironment = RANDOM_PORT)
@ActiveProfiles("test")
@Testcontainers
@Transactional
@Sql("/sql/orders-test-data.sql")  // Test data (DML)
class OrderIntegrationTest extends IntegrationTestSupport {

    @Test
    void shouldCreateAndGetOrder() {
        // Given - Use Fixture
        PlaceOrderRequest request = PlaceOrderRequestFixture.create();

        // When - 실제 HTTP POST
        ResponseEntity<OrderResponse> response = post(
            "/api/orders",
            request,
            OrderResponse.class
        );

        // Then
        assertCreated(response);
    }
}

✅ CORRECT: Flyway (DDL) vs @Sql (DML)

-- ✅ Flyway: V1__create_order_table.sql (DDL)
CREATE TABLE IF NOT EXISTS orders (
    order_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    ...
);

-- ✅ @Sql: orders-test-data.sql (DML)
INSERT INTO orders (order_id, customer_id, status, ...)
VALUES (100, 1, 'PENDING', ...);

-- ❌ WRONG: No DDL in @Sql
-- CREATE TABLE orders (...);

참조

자동 활성화

/kb-integration /go|red|green|refactor|tidy 실행 시 자동 활성화.