강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của 71kimty8570
71kimty8570

câu hỏi đã được viết

Trong thực tế! Phát triển ứng dụng quản lý thư viện với Kotlin và Spring Boot (tái cấu trúc dự án Java)

Bài học 21. Thêm trường vào sách

테스트를 위한 코드

Viết

·

100

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

테스트를 위한 코드로 보이는 fun fixture 라는 생성자 만드는 코드를 엔티티 안에 생성해주셨는데
테스트가 아니면 따로 사용되지 않을 것 같은 코드를 엔티티 단 안에 작성해도 괜찮나요?

javaspringkotlinspring-boot리팩토링

Câu trả lời 2

0

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

안녕하세요! 71kimty님~ 🙂 정말 좋은 질문이십니다. AI 인턴이 얘기해 준 것 처럼, fixture 함수를 Entity 클래스 안에 (더 정확히는 production 코드 안에) 넣게 되면 장단점이 있다고 생각해요.

  • 장점은 멀티 모듈에서 하위 모듈 (보통 하위 모둘에 Entity가 들어가죠) 의 fixture를 상위 모듈에서 쉽게 접근할 수 있다 는 것이고

  • 단점은, 어쨌거나 프로덕션 코드에서 fixture에 접근 가능하다는 것이죠.

    • (만약 test 코드 안에 fixture를 작성하면 상위 모듈에서 하위 모듈의 fixture를 사용할 수 없게 되어 상당히 불편합니다 🥲)

저는 마치 kotlin의 public var 필드처럼 열어두지만 사용하지 않는 것을 convention으로 하는 편이고, 요즘은 Entity companion object에 fixture를 바로 넣지 않고 같은 패키지에 object UserFixtures 와 같은 싱글톤을 만들어 테스트 함수를 넣는 편입니다.

 

만약, 위에서 말씀드린 단점을 극복하면서도 장점을 누리고 싶다면,

https://tech.kakaopay.com/post/given-test-code-2/

를 참고해보셔도 좋습니다.

java-test-fixtures 와 같은 라이브러리를 사용하면 프로덕션 폴더도 아니고 테스트 폴더도 아닌 제 3의 구조를 만들어 의존성 설정이 되어 있는 모듈에서 쓸 수 있게끔 처리할 수 있습니다. 개인적으로도 좋은 방법이라 생각합니다. 🙂

 

답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇

0

안녕하세요, 인프런 AI 인턴입니다. 71kimty님, 질문해주셔서 감사합니다. 테스트를 위해 엔티티 클래스 내에 fun fixture와 같은 함수를 두는 것에 대해 고민이 있으신 것 같네요.

엔티티 내 테스트용 코드 배치

테스트를 위한 코드를 엔티티 내부에 두는 것은 코드의 간결성과 테스트의 편의성을 위해 때때로 선택되는 방법입니다. 그러나, 이 방식이 항상 최선인 것은 아닙니다. 프로젝트 스타일이나 팀의 규칙에 따라, 테스트 코드와 프로덕션 코드를 명확히 분리하는 것이 더 나은 경우도 있죠.

fixture 함수의 장단점

  • 장점: 코드가 엔티티와 밀접하게 관련되어 있어, 테스트 코드를 작성할 때 명확한 이점을 제공합니다. 또한, 테스트 설정이 엔티티의 변경에 즉시 반영된다는 장점이 있습니다.
  • 단점: 테스트 코드가 프로덕션 코드 내부에 존재하게 되므로, 실제 애플리케이션에 불필요한 코드가 포함될 수 있습니다. 이는 코드의 가독성을 저하시킬 수 있으며, 유지보수 시 혼란을 초래할 수 있습니다.

관련 질문 및 답변

이와 관련하여 테스트 픽스쳐 관련 게시물에서 최태현 강사님이 멀티 모듈 환경에서의 테스트 픽스쳐 전략에 대해 설명하신 부분이 있습니다. 그 내용을 통해 엔티티 내부에 두는 것의 장단점 및 다른 방법(프로덕션 코드와 테스트 코드를 분리하여 관리하는 방법)에 대해서도 고민해 보시면 좋을 것 같습니다.

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

Hình ảnh hồ sơ của 71kimty8570
71kimty8570

câu hỏi đã được viết

Đặt câu hỏi