강의

멘토링

로드맵

Inflearn brand logo image

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

아라레님의 프로필 이미지
아라레

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

게시글 CRUD API 구현

ArticleApiTest 에서 정적 내부 클래스를 사용하는 이유는?

해결된 질문

작성

·

55

0

ArticleCreateRequest, ArticleUpdateRequest

은 ArticleApiTest 클래스 내부에 따로 만들어서 사용하고 있는데 이미 만들어진 클래스를 사용하지 않고 테스트 클래스 내부에서 작성해서 사용하는 이유가 뭔지 궁금합니다.

 

감사합니다.

답변 2

1

쿠케님의 프로필 이미지
쿠케
지식공유자

아라레님, 안녕하세요!

 

이건 정답이 있다기 보단 편하신대로 진행해도 크게 문제될 내용도 아니고 뭐가 더 낫다라고 하기도 애매한데요, 저는 아래와 같은 사유였습니다.

 

테스트 코드에 정의된 ArticleCreateRequest에는 테스트 객체 생성을 편하게 하려고 @AllArgsConstructor를 정의했었습니다.

그런데 원 코드에 정의된 ArticleCreateRequest에는 @AllArgsConstructor가 정의되어 있지 않고, 정의할 필요도 없는 상황입니다.

테스트로 인해 원 코드 수정하는 상황을 지양하고자 테스트 객체를 별도로 정의했네요.

물론, 이러한 생성자를 원 코드에 추가로 정의한다고 해서 딱히 문제될 지점도 아니지만,

원 코드와 테스트 코드의 경계를 만들어두려는 의도였습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 아라레님.

테스트 코드에서 ArticleCreateRequest, ArticleUpdateRequest와 같은 요청 객체를 테스트 클래스의 정적 내부 클래스로 정의하여 사용하는 이유는 개발 스타일과 테스트 설계에 따라 여러 가지 있습니다.

정적 내부 클래스를 사용하는 이유

  1. 캡슐화:

    • 테스트 클래스 내부에서만 사용되는 요청 객체를 외부로 노출하지 않고, 테스트 코드의 캡슐화를 유지할 수 있습니다. 이를 통해 테스트에 관련된 모든 코드를 한 곳에 모아둠으로써 가독성과 유지보수성을 높일 수 있습니다.
  2. 테스트 독립성:

    • 테스트 코드만의 특정 요구사항에 맞춘 요청 객체를 정의하는 것이 가능하므로, 테스트의 독립성과 의도된 상황에 맞는 객체 사용이 용이합니다. 이는 테스트 환경에서만 도입할 수 있는 간단한 코드 변경을 의미할 수 있습니다.
  3. 테스트 목적에 맞는 코드 간소화:

    • 테스트 코드에서는 실제 구현 코드와 달리 복잡한 객체 구조가 필요하지 않으며, 테스트 대상 메소드의 목적만을 달성하기 위해 최소한의 정의를 유지함으로써 코드를 단순화할 수 있습니다.
  4. 최소 의존성 유지:

    • 다른 패키지나 모듈로부터의 불필요한 의존성을 줄이기 위해서, 해당 테스트 내부에서 간단하게 요청 객체를 정의하는 것이 바람직할 수 있습니다.

이와 관련된 구체적인 내용은 의도된 설계나 강의에서 구체적인 이유가 더 설명될 수 있으며, 아래에 유사한 질문에 대한 답변을 포함했습니다:

혹시 더 궁금한 점이 있다면, 질문을 이어 나가시면 강의 지식공유자분께서 더욱 심도 있는 답변을 제공해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

아라레님의 프로필 이미지
아라레

작성한 질문수

질문하기