작성
·
322
·
수정됨
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
클린아키텍쳐를 열심히 학습중인데요 추상클래스(noteRepository)를 만드는 이유가 테스트가 원활하게 가능하게 추상클래스를 만든다고 했는데
그러면 테스트코드를 작성할때 추상클래스(noteRepository)에 대한 테스트와 구현체 클래스(noteRepositoryImpl)에 대한 테스트를 각각 작성하는게 좋은 방법일까요?
그렇다면 추상클래스는 메서드만 정의되어있는 상태인데 어떤방식으로 테스트코드를 작성해야할까요?
답변 2
1
추상클래스를 직접 테스트할 수는 없고요.
추상클래스를 A라는 클래스에서 활용을 할 때 A 클래스를 테스트할 수 있다고 보시면 됩니다
만약 A 클래스가 내부에 Impl 객체를 직접 활용하는 경우라면 실제 구현 동작에 의존하게 됩니다.
NoteRepositoryImpl 이 로컬 DB를 사용하거나 네트워크를 경우하여 클라우드에 저장될 수도 있는데 각 상황에 따라 A 클래스의 동작 결과가 달라질 수 있습니다.
네트워크 경유인 경우 네트워크 연결이 끊어지면 제대로 동작이 안 될 겁니다.
로컬 DB의 경우에도 특정 상황에서 예외가 발생할 수도 있습니다.
이러한 상황을 배제하고 항상 동일한 결과가 나오는 테스트를 위해서는 NoteRepository (추상 인터페이스) 를 A 클래스가 사용하는 경우입니다.
따라서 결국 추상 인터페이스를 활용하면 이를 활용하는 쪽 클래스의 테스트가 용이해 지는 결과가 됩니다.
따라서 추상 인터페이스 자체를 테스트하지는 않습니다.
정확합니다