대역을 사용하는 이유
테스트 대상이 외부 객체에 의존하면 그 객체의 준비와 실패가 검사에 섞일 수 있다. Mockito로 필요한 동작을 제공하는 대역을 만들어 대상 로직을 좁혀 확인할 수 있다. 실제 객체가 없어도 조건을 구성할 수 있지만 외부 시스템과의 실제 호환성까지 검증되는 것은 아니다.
응답 설정과 호출 확인
특정 메서드가 호출될 때 반환할 결과를 정하는 일과 실제로 어떤 호출이 있었는지 확인하는 일은 다르다. Mockito는 두 작업을 분리해 제공한다. 인자 매칭이나 인자 캡처를 이용하면 전달한 값도 조사할 수 있다. 실제 메서드를 실행하는 스파이는 순수한 대역과 부작용 범위가 다르다.
검사 설계의 균형
모든 내부 호출을 고정하면 구현을 조금 정리해도 테스트가 깨질 수 있다. 관찰해야 하는 계약을 골라 검증하고 값 객체나 단순 로직까지 과도하게 대역으로 만들지 않는다. 주요 버전에 따라 필요한 자바 버전과 대역 생성 방식이 달라진다. Mockito 5 계열은 자바 11 이상을 요구하므로 프로젝트 환경과 맞춰 선택한다.
관련 문서
Moq / NSubstitute / FakeItEasy / AssertJ