본문으로 건너뛰기

메서드와 프로퍼티 검증

Part 1에서 클래스의 가시성, 한정자, 네이밍 규칙은 모두 통과했습니다. 그런데 public 메서드가 void를 반환해야 할 곳에서 Task를 반환하고 있고, 불변이어야 할 프로퍼티에 public set이 노출되어 있다면? 클래스 수준 검증만으로는 이런 내부 설계 위반을 잡을 수 없습니다.

클래스의 껍데기가 올바르다고 내부까지 올바른 것은 아닙니다. 멤버 수준까지 검증해야 설계 의도가 완전히 보호됩니다.

이 파트에서는 ClassValidator의 메서드 검증과 프로퍼티/필드 검증 기능을 학습합니다. 메서드의 가시성, 정적 여부, 반환 타입, 파라미터뿐만 아니라 프로퍼티의 존재 여부와 불변성까지 아키텍처 테스트로 강제하는 방법을 다룹니다.

  1. 메서드 시그니처 검증
    • RequireMethod, RequireAllMethods로 메서드 존재 및 가시성 확인
    • RequireExtensionMethod로 확장 메서드 패턴 강제
  2. 반환 타입 규칙 강제
    • RequireReturnType, RequireReturnTypeOfDeclaringClass로 팩토리 메서드 패턴 검증
    • RequireReturnTypeContaining으로 유연한 반환 타입 매칭
  3. 파라미터 규칙 검증
    • RequireParameterCount, RequireFirstParameterTypeContaining으로 메서드 시그니처 제어
  4. 프로퍼티와 필드 불변성 보호
    • RequireNoPublicSetters로 불변 설계 강제
    • RequireNoInstanceFields로 필드 접근 규칙 검증
  • Usecase 클래스의 Execute 메서드가 올바른 시그니처를 갖는지 검증
  • 팩토리 메서드가 선언 클래스 타입을 반환하는지 확인
  • Value Object에 public set 프로퍼티가 없는지 자동 검증
챕터주제핵심 API
Chapter 1메서드 검증RequireMethod, RequireAllMethods, RequireVisibility, RequireExtensionMethod
Chapter 2반환 타입 검증RequireReturnType, RequireReturnTypeOfDeclaringClass, RequireReturnTypeContaining
Chapter 3파라미터 검증RequireParameterCount, RequireFirstParameterTypeContaining
Chapter 4프로퍼티와 필드 검증RequireProperty, RequireNoPublicSetters, RequireNoInstanceFields
메서드 검증 → 반환 타입 검증 → 파라미터 검증 → 프로퍼티/필드 검증

첫 번째 장에서 RequireMethodRequireAllMethods로 메서드의 존재와 가시성, 정적 여부를 검증합니다.

1장: 메서드 검증