인프런 커뮤니티 질문&답변

딱구님의 프로필 이미지
딱구

작성한 질문수

이펙티브 자바 완벽 공략 1부

아이템 3. 핵심 정리 1 - 생성자를 사용하는 방법 1

Mock test 관련 질문입니다!

해결된 질문

작성

·

462

0

안녕하세요 선생님!

제가 이해를 한 내용이 맞는지 질문 드리고자 글을 남기게 되었습니다. (말씀드리기 앞서, 강의 너무 잘 듣고 있습니다 ㅎㅎ 좋은 강의 너무 감사드린다는 말씀 전하고 싶습니다!)

 

싱글톤 객체를 테스트마다 매번 생성하는게 Mock 객체를 생성하는 것 보다 operation 비용이 많이 든다고 설명해주셨는데요.

제가 이 내용에 대해

테스트 코드 상에서 싱글톤 객체를 생성할 때는 "필요한 모든 필드가 들어가있는 상태인 객체"를 생성하고, Mock객체를 생성할 때는 싱글톤 객체보다 필드가 적어서 상대적으로 비용이 적게 든다

라고 이해를 하고 있습니다. 혹시 이해한 내용이 맞을까요..??

 

(이해한 내용에 대해서 확실한지 검증하려고 여러 문헌을 찾아봤지만 찾을 수가 없었어요 ㅠㅠ)

답변 1

4

저도 비슷한 의문을 가지고 있는데 의견을 남겨봅니다..!

Elvis 객체의 sing 메서드가 외부 API를 호출하고 이를 테스트한다고 가정해보겠습니다. 외부 API는 호출 횟수에 따라 price가 생길 수 있다면, 수십번 테스트와 함께 호출되면 안될 것입니다.
(price 발생 없이 test 시간만 오래 걸리는 경우도 마찬가지입니다.)

테스트는 sing 메서드가 잘 호출 됐는지, 외부 API를 호출하는지를 검증하고 싶으므로, 실제 API 호출은 불필요합니다. 때문에 MockElvis를 만들면 실제 API 호출을 제거하여 비용을 줄일 수 있다는 의미로 이해했습니다!

제가 이해한 것이 맞는지 잘 모르겠지만, 도움이 될 수 있다면 좋겠네요 ㅎㅎ

딱구님의 프로필 이미지
딱구
질문자

v44ads님 의견 감사합니다!!

객체가 외부 API와 연결되고, 그걸 호출하는 부분을 비용으로 상정할 생각을 하지 못했어요. 단지 객체의 생성 비용만 생각하고 있었네요 ㅎㅎ.. 선생님 덕분에 시야가 더 많이 넓어진 것 같습니다.

도움이 많이 됐습니다! 감사합니다!!

딱구님의 프로필 이미지
딱구

작성한 질문수

질문하기