작성
·
69
1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
테스트를 위한 코드로 보이는 fun fixture 라는 생성자 만드는 코드를 엔티티 안에 생성해주셨는데
테스트가 아니면 따로 사용되지 않을 것 같은 코드를 엔티티 단 안에 작성해도 괜찮나요?
답변 2
0
안녕하세요! 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
와 같은 함수를 두는 것에 대해 고민이 있으신 것 같네요.
테스트를 위한 코드를 엔티티 내부에 두는 것은 코드의 간결성과 테스트의 편의성을 위해 때때로 선택되는 방법입니다. 그러나, 이 방식이 항상 최선인 것은 아닙니다. 프로젝트 스타일이나 팀의 규칙에 따라, 테스트 코드와 프로덕션 코드를 명확히 분리하는 것이 더 나은 경우도 있죠.
이와 관련하여 테스트 픽스쳐 관련 게시물에서 최태현 강사님이 멀티 모듈 환경에서의 테스트 픽스쳐 전략에 대해 설명하신 부분이 있습니다. 그 내용을 통해 엔티티 내부에 두는 것의 장단점 및 다른 방법(프로덕션 코드와 테스트 코드를 분리하여 관리하는 방법)에 대해서도 고민해 보시면 좋을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.