PHpullh
학습 라이브러리/Java/계약 테스트

JAVA · 테스트

계약 테스트

서비스 간 API 계약을 검증하는 Consumer-Driven Contract 테스트입니다.

테스트고급계약테스트PactCDC마이크로서비스

핵심 설명

서비스 간 API 계약을 검증하는 Consumer-Driven Contract 테스트입니다.

Java code

// Spring Cloud Contract 또는 Pact 사용

// 계약 테스트 개념:
// Consumer(소비자)가 기대하는 API 형태를 계약으로 정의
// Provider(제공자)가 해당 계약을 만족하는지 검증

// 1. Consumer 측 계약 정의 (Pact 형식)
// {
//   "consumer": "order-service",
//   "provider": "user-service",
//   "interactions": [{
//     "description": "사용자 조회",
//     "request": {
//       "method": "GET",
//       "path": "/users/1"
//     },
//     "response": {
//       "status": 200,
//       "body": {
//         "id": "1",
//         "name": "홍길동",
//         "email": "hong@test.com"
//       }
//     }
//   }]
// }

// 2. Provider 측 검증
// @Provider("user-service")
// @PactFolder("pacts")
// class UserServicePactTest {
//     @TestTemplate
//     @ExtendWith(PactVerificationInvocationContextProvider.class)
//     void verifyPact(PactVerificationContext context) {
//         context.verifyInteraction();
//     }
// }

class Main {
    public static void main(String[] args) {
        System.out.println("계약 테스트 흐름:");
        System.out.println("1. Consumer가 계약(Pact) 생성");
        System.out.println("2. Pact Broker에 계약 공유");
        System.out.println("3. Provider가 계약 검증");
        System.out.println("4. 계약 위반 시 배포 차단");
    }
}

학습 팁

계약 테스트는 E2E 테스트보다 빠르고 안정적으로 서비스 간 호환성을 검증합니다. Pact Broker로 계약을 중앙 관리하세요.

주의할 점

Provider가 계약을 깨는 변경을 배포하면 Consumer가 장애를 겪습니다. CI에서 계약 검증을 필수 단계로 넣으세요.

자주 묻는 질문

계약 테스트란 무엇인가요?

서비스 간 API 계약을 검증하는 Consumer-Driven Contract 테스트입니다.

계약 테스트 학습 시 주의할 점은 무엇인가요?

Provider가 계약을 깨는 변경을 배포하면 Consumer가 장애를 겪습니다. CI에서 계약 검증을 필수 단계로 넣으세요.