피드로 돌아가기
Dev.toBackend
원문 읽기
Mocking Framework 제거를 위한 Interface Segregation 기반의 함수형 테스트 설계
All You Need Is Lambdas: Java Tests Without a Mocking Framework
AI 요약
Context
Spring Data JPA의 거대 Repository 인터페이스 사용으로 인한 과도한 Mockito 설정 의존성 발생. 도메인 로직이 영속성 계층의 인터페이스에 종속되어 테스트 코드의 가독성이 저하되고 Setup 비용이 증가하는 구조적 한계 노출.
Technical Solution
- Interface Segregation Principle 적용을 통한 거대 Repository 인터페이스의 세분화
- 도메인 서비스가 필요한 최소 기능만을 정의한 작은 인터페이스(Single-method Interface) 도입
- Mockito의 stubbing 대신 Java Lambda를 활용한 가벼운 동작 정의 방식으로 테스트 구조 전환
- 영속성 프레임워크 중심의 설계에서 도메인 중심의 설계로 경계(Boundary) 재설정
- Hexagonal Architecture 적용을 통한 인프라 계층과 도메인 로직의 완전한 분리
실천 포인트
- Repository 인터페이스에 사용하지 않는 메서드가 포함되어 있는지 검토 - Mockito 설정 코드가 실제 테스트 로직보다 길어질 경우 인터페이스 분리 고려 - 단순 값 반환이나 상태 변경이 필요한 경우 Mocking 대신 Lambda 함수 주입 방식 시도 - 프레임워크가 제공하는 기본 인터페이스 대신 도메인 요구사항에 맞는 전용 인터페이스 정의