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

박준형님의 프로필 이미지

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

Business Layer 테스트 (1)

테스트 나누는 기준

작성

·

190

0

  • 학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!

  • 먼저 유사한 질문이 있었는지 검색해 보세요.

  • 서로 예의를 지키며 존중하는 문화를 만들어가요.

     

 안녕하세요 강사님 37분 쯤 test를 주문 생성 시 주문 상태는 INIT이다 라는 test를 하시는데 이를 이전 TotalPrice test하는 testcode와 같이 합쳐서 주문 생성 시 주문 상태는 INIT , TotalPrice를 구할 수 있다 이런식으로 하나로 합치는 건 어떻게 생각하시나요?

답변 2

1

박우빈님의 프로필 이미지
박우빈
지식공유자

박준형 님, 안녕하세요!

테스트 코드를 작성하는 사람이 테스트 코드의 내용적인 단위를 어느 정도로 잡느냐에 따라 그렇게 하는 것도 가능합니다.
말씀하신 것처럼 Order를 생성한 시점에 Order 내에서 일어나는 여러가지 상황들을 한번에 테스트할 수도 있고, 초기상태를 검증하는 것과, 주어진 Product를 통해 totalPrice를 계산하는 것, 2가지를 세부적으로 구분해서 테스트할 수도 있겠습니다.

테스트 코드가 문서의 기능을 한다는 관점에서 테스트 케이스를 어떤 식으로 나누어 작성하는 것이 좋을지 고민해보시면 좋을 것 같아요.

감사합니다. 🙂

박준형님의 프로필 이미지
박준형
질문자

답변 감사합니다.!

0

안녕하세요, 인프런 AI 인턴입니다.

테스트 코드를 작성할 때 각 테스트가 어떤 목적을 가지고 있는지 분명히 하는 것이 중요합니다. 주문 생성 시 주문 상태가 INIT인지 확인하는 테스트와 TotalPrice를 구하는 테스트가 각각 다른 목적을 가지고 있다면, 이를 분리하여 테스트하는 것이 좋습니다. 이는 각 테스트의 명확성을 유지하고, 추후 테스트를 검토하거나 실패 시 해당 기능의 문제를 더 쉽게 파악할 수 있게 해줍니다.

한편, 만약 두 기능이 밀접하게 연관되어 있는 경우, 예를 들어 주문 생성 로직에서 주문 상태와 TotalPrice가 서로에게 영향을 미친다면, 이를 하나의 테스트로 합치는 것이 유용할 수 있습니다. 그러나 이 경우에도 명확한 목적을 가지고 테스트를 구성해야 하며, 하나의 테스트 내에서 여러 케이스를 검증하려 할 때는 코드의 복잡성과 테스트의 명확성 사이에서 적절한 균형을 찾아야 합니다.

따라서 테스트를 합치는 것이 적절한지 여부는 테스트의 목적, 관련 기능의 구현 방식 및 서로간의 관계, 그리고 테스트의 유지 보수성 등 여러 요소를 고려하여 결정해야 합니다.

또한, 테스트에 대한 좀 더 자세한 가이드를 원하신다면 Spring Boot Reference Documentation에서 테스트 관련 유용한 정보를 찾아볼 수 있습니다:
- Spring Boot에서는 테스팅 유틸리티와 지원 클래스, 그리고 공통 테스트 의존성을 제공하는 전용 스타터를 포함하고 있습니다.
- 이 섹션에서는 테스팅에 대한 일반적인 질문에 답합니다.

Spring Boot Reference Documentation v3.1.5 - Testing