inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Spring REST Docs

ERD 가장자리에 있는 도메인 테스트 질문

103

김혁준

작성한 질문수 7

0

ERD 가장자리에 있는 도메인들은 선행적으로 존재해야하는 도메인들이 있다보니 테스트 코드 작성 시 given 부분이 너무 길어져요.

어떻게 짜는게 좋은지 의견 부탁드립니다!!

spring tdd jpa mockito 소프트웨어-테스트 junit5

답변 2

0

박우빈

안녕하세요, 김혁준 님!

네, 맞습니다. 엮여 있는 도메인이 많을수록 벌어질 수밖에 없는 상황이기에, 아래와 같은 방법을 사용해보시면 좋습니다.

  • 테스트 클래스 내에서 중복 로직 추출

     

  • (적절한 관리가 가능하다면) fixture 를 쉽게 만들 수 있는 유틸 클래스 추가 및 이용

예를 들어 C 도메인을 만들기 위해 A, B 도메인이 순차적으로 필요한 상황에서, 대부분의 테스트에서 A, B가 크게 달라지지 않는다면 위와 같은 방법을 사용해 생산성을 높여볼 수 있을 것 같아요.

다만, 너무 많은 정보를 함축하여 테스트 코드를 읽을 때 어려움이 생기는 상황은 잘 피해서 도입하는 것이 좋겠습니다.

도움이 되셨기를 바랍니다.
감사합니다. 🙂

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
김혁준님,

테스트 코드에서 given 부분이 길어지는 문제는 대부분의 개발자들이 겪는 공통적인 도전입니다. 특히, ERD 구조에서 가장자리에 있는 도메인들은 다른 도메인들과의 관계 때문에 많은 설정이 필요할 수 있습니다. 이 문제에 대한 몇 가지 일반적인 해결책을 제안드리겠습니다:

  1. 테스트 객체 생성 유틸리티 사용: 자주 사용되는 초기 설정 객체를 생성하는 유틸리티 메서드를 만들면 중복된 코드를 줄이고 가독성을 높일 수 있습니다.

  2. Builder 패턴 활용: 복잡한 객체를 생성할 때 Builder 패턴을 사용하면 필요한 속성만 설정할 수 있고, 테스트 시 더 읽기 쉽고 유지보수가 쉬운 코드를 작성할 수 있습니다.

  3. 테스트 픽스처: 공통적으로 사용되는 데이터 셋업을 위한 ‘픽스처’를 마련하면 설정 시간을 줄이고, 테스트의 독립성을 유지할 수 있습니다.

  4. Mocking 활용: 외부 의존성이나 설정이 복잡한 부분은 Mocking을 활용해 간소화할 수 있습니다. Mockito 같은 라이브러리가 도움이 됩니다.

객체의 복잡성을 줄이고 테스트 코드를 더 읽기 쉬운 방향으로 다듬어 보세요. 이렇게 하면 유지보수와 코드의 품질이 향상될 것입니다. 추가적인 테스트 관련 도구나 클래스는 Spring Boot 문서나 기타 자료를 참조하실 수도 있습니다.

Spring Boot의 테스트 관련 문서도 참고해 보세요: Spring Boot Testing Documentation

도움이 되셨기를 바랍니다.

private 상수 테스트 관련 질문

0

101

1

void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??

0

149

2

커버리지는 어떻게 활용하시는지 궁금합니다.

0

185

2

테스트 문서화 질문입니다

0

121

2

단위테스트 질문이 있습니다

0

103

2

컨트롤러는 모킹을 한 이유가 궁금합니다.

0

117

2

DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?

0

141

2

OrderCreateRequest DTO에 대해서 궁금한점

0

109

2

고전파의 테스트 대역 사용 대상, 공유 의존성

0

165

2

계층 관련 질문이 있습니다.

0

156

3

'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다

1

133

2

혹시 update 로직은 어떻게 테스트하나요? (@Setter?)

0

142

2

단위테스트와 통합테스트의 경계가 궁금합니다.

0

248

2

Service+Repository 통합테스트 관련 질문입니다.

0

159

2

OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요

0

197

2

test 용 .yml

0

101

2

throws Exception

0

85

2

카페키오스크 클래스 문의 ,,

0

99

2

Rest docs 문서용 테스트코드를 따로 작성해야 되나요?

0

186

2

테스트 코드에서 필요한 생성자

0

143

1

tearDown 순서

0

120

2

@Builder 생성자 private

0

141

2

@DisplayName gradle / intellJ

0

98

2

36:40 초 부근에 tearDown 없어도 통과하는 이유가 궁금해요

0

187

2