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

chl.cken님의 프로필 이미지
chl.cken

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 기능 테스트

테스트코드에서 엔티티 set과 builder패턴 사용

작성

·

624

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)

[질문 내용]
안녕하세요

테스트코드 작성중 궁금한게 생겨 질문드립니다.

 

@Setter 어노테이션을 자주 사용하게 되면 어디서 변경될지 모르기때문에 사용을 하지말라고 알고 있는데

김영한 강사님께서는 테스트 코드 작성시 set을 사용하셔서요

테스트코드에서만 setter를 사용한다면 문제가 없을까요?

 

이에 관련하여 구글링을 해보았는데 테스트코드 한정으로 setter를 사용한다고 하는 분들도 있네요

 

저 같은경우는 테스트코드에서도 @Builder 어노테이션을 통해서 set을 대체하고 있는데요 아무래도 좀 귀찮은면이 있어서...

 

엔티티에 @Setter를 선언하고 테스트 코드에만 사용하는것이 더 좋을지 그래도 @Setter의 위험성을 생각해서 사용하지말고, @Builder를 사용하는것이 더 좋을지 질문드립니다. 감사합니다.

답변 1

2

안녕하세요. chl.cken님, 공식 서포터즈 OMG입니다.
.

테스트 코드에서만 Setter를 사용한다는 것은 결국 Setter가 열려있다는 사실에는 변함이 없고,

Setter는 테스트코드에서만 동작하는 코드가 될 것입니다.

(운영 코드에 set을 한 코드가 있을 순 있겠지만 테스트코드에서만 사용한다는 룰이 적용)

Setter는 테스트를 위한 코드가 된다는 것이겠죠.

 

다음 링크를 보시면 아시겠지만 Setter는 필요한 곳에만 한정해서 열어둘 것을 권장하고 계시고,

다른 영한님의 답변들을 보더라도

"Setter를 최대한 제거하도록 노력", " 별도의 데이터를 변경하는 메서드"를 생성할 것을 가이드해주시는데요.

image

추가로 제가 생각하는 기준을 덧붙이면 setter관련 팀내 규칙이 있다면 팀내 규칙을 우선으로 따르고,

혼자 개발한다면 본인만의 기준을 정해서 대신 왜 그러한 기준을 정했는지에 대한 명확한 자기 생각을 갖고 개발을 하시면 될 것 같아요.

 

제 생각과 영한님 답변을 참고하여 본인의 기준을 세워보실 것을 권장드립니다.
.
감사합니다.

chl.cken님의 프로필 이미지
chl.cken
질문자

빠른 답변 감사합니다!! 본인의 기준과 근거가 중요하겠네요!

chl.cken님의 프로필 이미지
chl.cken

작성한 질문수

질문하기