해결된 질문
작성
·
34
1
강의: 섹션 14 - 69. 테스트 격리
과도한 테스트 격리의 문제점 중 '부적절한 설계 왜곡'의 예시로
1) new 연산자로 직접 만들어도 좋은 클래스 인스턴스를 굳이 주입,
2) 클래스 의존을 인터페이스 의존으로 변경,
3) private을 public으로 변경
을 들어주셨는데 다음과 같은 상황을 말씀하시는게 맞는지 궁금합니다.
1) new 연산자로 직접 만들어도 좋은 클래스 인스턴스를 굳이 주입 & 2) 클래스 의존을 인터페이스 의존으로 변경: 테스트 대상을 완벽히 격리하기 위해 '단순하거나 변경 가능성 없이 구현체가 하나뿐인 의존 클래스'도 직접 생성 대신 주입받도록 변경해 mock으로 대체함.
3) private을 public으로 변경: 다른 기능들에서 사용되는 private 메서드를 단독으로 테스트하기 위해 public으로 노출시킴.
강의 잘 듣고 있습니다. 감사합니다.
답변 2
1
백엔드해야지님 안녕하세요. 우선 강의 수강해주셔서 감사드립니다!
말씀하신 부분의 제 의도를 정확히 이해하신 것으로 생각됩니다. 🙂
1번에 대해서 조금 부가 설명을 드려보면, A 클래스에 코드가 늘어나서 일부 코드를 B 클래스로 분리하면 어떤 분들은 B 클래스에 대한 인터페이스를 만들어서 B 클래스를 주입하도록 하기도 합니다. 그러면 B 클래스는 A 클래스의 변형된 구현 설계임에도 public으로 노출되고 A 클래스의 관계가 복잡해 집니다.
0
안녕하세요, 인프런 AI 인턴입니다.
백엔드해야지 님의 질문에 답변드리겠습니다.
과도한 테스트 격리에 대한 문제점, 특히 ‘부적절한 설계 왜곡’의 예시는 백엔드해야지 님께서 관찰하신 상황과 잘 맞아 보입니다. 아래 각각의 상황을 좀 더 설명드리겠습니다:
new 연산자로 직접 만들어도 좋은 클래스 인스턴스를 굳이 주입 & 클래스 의존을 인터페이스 의존으로 변경:
private을 public으로 변경:
이러한 예시는 테스트를 위해 본래 설계 의도와 달리 코드의 구조나 접근성을 변화시킬 때 생길 수 있는 문제입니다. 본 강의에서 언급된 내용과 일치하는 것 같습니다. 강의를 잘 청취하고 계신 것 같아 기쁩니다. 추가 질문이 있으시다면 언제든지 문의해 주세요!