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에서 계약 검증을 필수 단계로 넣으세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.