테스트를 위해 **목(Mock)**이나 스텁(Stub) 객체를 수동으로 만드는 것은 번거롭고 오류 발생 가능성이 높다.
테스트하려는 대상의 의존성이 복잡해질수록, 가짜 객체를 만들기 위한 상속, 인터페이스 구현 등 반복적인 코드가 늘어나고 테스트 코드 자체가 복잡해지는 문제가 발생한다.
이를 해결하기 위해 등장한 것이 격리 프레임워크(Isolation Framework), 자바에서는 **모의 프레임워크(Mocking Framework)**라고 불리는 라이브러리들이다.
자바의 대표적인 모의 프레임워크로는
Mockito
,EasyMock
,PowerMock
등이 있다.
이러한 프레임워크의 핵심 가치는 특정 프레임워크 자체에 있는 것이 아니라, 이를 사용함으로써 얻게 되는 테스트의 가독성, 유지보수성, 지속 가능성에 있다.
잘 활용하면 프로덕션 코드 변경에 따른 테스트 코드 수정 작업을 최소화할 수 있지만, 잘못 사용하면 오히려 테스트를 읽기 어렵고 신뢰할 수 없게 만들 수도 있다.