Mockito : Java의 가장 유명한 모킹 프레임워크
테스트를 할때, 여러 종속 관계에 있는 항목들을 어떻게 대체할 수 있을까요?
Spring initializr에서 Mockito로 단위 테스트를 작성
1. Stub
- 인스턴스화하여 구현한 가짜 객체(Dummy, 기능 구현이 없음)을 이용해 실제로 동작하는 것처럼 보이게 만드는 객체입니다.
- 해당 인터페이스나 클래스를 최소한으로 구현합니다.
- 테스트에서 호출된 요청에 대해 미리 준비해둔답변을 응답합니다.
- 테스트시에 프로그래밍된 것 외에는 응답하지 않습니다.
- 협력 객체의 특정 부분이 테스트가 어려운 경우, stub을 사용하여 수월하게 테스트할 수 있습니다.
2. Mock
- 호출에 대한 기대를 명세하고, 내용에 따라 동작하도록 프로그래밍 된 객체입니다.
- 테스트 작성을 위한 환경 구축이 어려울 때, 테스트하고자 하는 코드와 엮인 객ㅊ들을 대신하기 위해 만들어진 객체입니다.
- 행위 검증을 진행합니다.
Stub과 Mock의 차이
stub을 포함한 다른 대역들은 상태 검증(state verification) 을 사용하고 Mock 오브젝트는 행위 검증(behavior verification) 을 사용합니다.
상태 검증이란 메소드가 수행된 후, 객체의 상태를 확인하여 올바르게 동작했는지를 확인하는 검증법입니다.
행위 검증이란 메소드의 리턴 값으로 판단할 수 없는 경우, 특정 동작을 수행하는지 확인하는 검증법입니다.
검증의 대상이 다르다는 것이 중요한 체크 요소입니다.
참고
https://azderica.github.io/00-test-mock-and-stub/