게시글
질문&답변
컨트롤러 테스트시 size 없이 전달할때 npe
안녕하세요 호돌맨님!! 답변을 몇개씩이나.. 자세하게 달아주셨는데 이제 봤습니다 ㅠㅠ .. 답변 달아주신 내용과 github 링크를 보니 궁금했던 부분이 좀 해소가 됐습니다! 이걸 해결하려고 이것 저것 찾아보고 호돌맨님의 의견을 들으면서 관련 키워드로 검색도 해보고 했더니 부족한 것도 많이 느끼고 공부가 많이 됐어요.. 감사드립니다 ㅎㅎ 이제 남은 인강도 마저 달려야겠어요 ㅎㅎ 항상 자세한 답변 감사드립니다!!!
- 3
- 3
- 611
질문&답변
컨트롤러 테스트시 size 없이 전달할때 npe
안녕하세요 호돌맨님!! 장문의 답변 감사드립니다 ㅠㅠ 처음엔 기본 생성자만 생성하려고 @NoArgsConstructor 를 사용했었는데요 기본 생성자가 있으니 롬복이 자동으로 모든 필드를 받는 생성자를 만들지 않고 빌더는 모든 필드를 받는 생성자가 필요하다고 컴파일 에러가 나더라구요.. 그래서 모든 필드를 받는 생성자를 만들어줘야겠다 싶어서 간편하게 @AllArgsConstructor를 사용했는데 안티패턴이었군요 ㅎㅎ..;; 호돌맨님의 정성스러운 답변을 보고도 제 지식이 부족해 아직 충분히 이해가 가지 않아 다시 질문드립니다 ㅠㅠ 두번째 질문에서 @Builder.Default 에 관해서 여쭤본 계기는 아래와 같습니다 처음 질문 후 여러 가지 시도해봤었는데요 (사진) 위와 같이 빌더를 제외한 나머지 기본 생성자, 전체필드를 받는 생성자,겟터,셋터를 모두 직접 만들어서 테스트 케이스를 돌려보니 똑같이 NPE가 나오더라구요 (기본생성자는 컨트롤러에서 ModelAttribute 어노테이션이 프로퍼티로 접근할때 필요하다고 생각하여 추가했었습니다.. setter도 타지 않는것을 확인했습니다) 이 방법을 시도 후 전 @NoArgsConsturctor, @AllArgsConstructor 두 어노테이션에서 만들어주는 생성자를 직접 만들었는데도 왜 에러가 나는지 궁금하더라구요 그래서 컴파일된 클래스파일을 열어봤습니다 1.직접 생성자를 생성, 테스트 후 디컴파일된 소스입니다 (사진) 2.두 어노테이션을 사용해 테스트 후 디컴파일한 소스입니다 (사진) 위와 같이 생성자에서 $default$size() 라는 메서드를 호출 해 기본값을 셋팅하는걸 발견해서 @Builder.Default 에 대해 질문을 드렸습니다 ㅠㅠ 저의 경우 호돌맨님이 말씀하신 것 처럼 기본생성자를 생성해서 테스트 케이스를 돌려봐도 똑같이 NPE가 발생해서 의문이 생겼었는데.. 아마 제 테스트에서 잘못된 부분이 있었나봅니다.. ㅠㅠ 알려주시면 또 테스트 해보겠습니다! 늦은 시간에 정성스러운 답변 감사합니다!
- 3
- 3
- 611