Project 해축갤(27)
-
테스트를 더 빨리 끝내보기 (feat. 자료구조, singletonList)
https://github.com/xpmxf4/HaeChuk-Gallery/blob/main/src/test/java/HailYoungHan/Board/controller/PostControllerTest.java 위와 같은 코드가 있는 데 테스트하는 게 일일이 귀찮아서 시작했던 테스트 코드를 이제는 더 빨리 굴려볼 수는 없을까 라는 고민이 들어 코드를 한번 개선해보고자 했습니다. 그렇다면 어떤 부분을 개선할 수 있을까 라는 고민을 하다가 List allPosts 부분을 봤습니다. 자료구조를 사용한다면 어떻게 더 빠른 코드가 생성이 될 수도 있지 않을까 싶었습니다. 그래서 다음 2가지 코드를 한번 짜봤습니다. List 자료구조를 활용해 게시물 담기 처음은 기존처럼 Arrays.asList() 를 사용해 ..
2023.11.02 -
테스트 코드 작성 시 유의할 점 (Mockito doNothing)
https://github.com/xpmxf4/HaeChuk-Gallery/blob/main/src/test/java/HailYoungHan/Board/controller/CommentControllerTest.java 위는 다 작성된 테스트 코드입니다. 중간에 오늘의 주제가 있는 데 바로 doNothing입니다. 해축갤 프로젝트에서 댓글 생성을 담당하는 Controller의 API 슬라이스 테스트 코드를 작성 중에 쓴 글입니다. 이 함수는 dto를 파라미터로 넘겨받아 Entity 객체로 전환 후, 이를 repository를 통해서 save 하는 함수입니다. CommentService는 Mock 객체이기 때문에 사실할 이유가 없어도 무방하지만 그래도 하는 게 좋은 이유가 있습니다. CommentServi..
2023.11.02 -
Jackson과 @Getter를 이용한 JSON 직렬화시 필드 이름이 바뀌는 에러
Java에서 데이터를 표현하는 클래스는 종종 필드와 해당 필드에 접근하기 위한 getter, setter 메서드를 포함하고 있습니다. Lombok의 @Getter 어노테이션을 사용하면, 이러한 getter 메서드를 자동으로 생성할 수 있죠. 그런데 Jackson 라이브러리를 이용해서 이러한 클래스를 JSON으로 직렬화할 때, 일부 메서드의 네이밍이 JSON의 키로 변환될 때 직렬화 하고자 한 객체의 필드 네이밍과는 다른 경우가 있습니다. 특히, boolean 타입의 필드의 경우, getter 메소드의 이름이 is로 시작하는 경우가 많습니다. 그럼 Jackson은 이러한 메소드 이름을 어떻게 처리하고 JSON의 키로 변환할까요? 예제 코드(이자 실제 저의 코드 ㅠ) @Getter @NoArgsConstru..
2023.11.01 -
@Builder will ignore the initializing expression entirely 경고 해결
.../entity/Member.java:33: warning: @Builder will ignore the initializing expression entirely. If you want the initializing expression to serve as default, add @Builder.Default. If it is not supposed to be settable during building, make the field final. private List posts = new ArrayList(); 빌드를 하던 와중에 이런 경고가 나왔습니다. Builder는 초기화 식을 아얘 무시한다는 경고문입니다. 원인 저의 Member 엔티티입니다. 여기서 경고를 일으키는 문제점은 posts, co..
2023.11.01 -
postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다
매번 기능 만늘때마다 postman 띡 띡 딸깍 하며 기능 테스트 하는 게 너무나 귀찮습니다. '귀차니즘'이 많은 개발자냐고요? 네! 그거 잘못된 거 아니냐고요? 는 장난입니다만, 사실 진짜 알빠노이긴 합니다. 저는 귀찮은 일은 정말 질색입니다. 매번 기능, 코드 수정할 때 마다 일일히 postman 띡띡딸깍 하기 싫기도 하죠. 그리고 많은 사람들이 CI/CD 를 구축했다면서 테스트 없는 CI 를 구축한 경우를 여럿 봐왔는 데 사실 이건 CI 가 아니라고 생각합니다. 추후 생길 (사실 이미 매번 배포하다가 귀찮음을 겪어버리고) CI/CD 구축을 위해서라도 테스트 코드를 작성해야 할 이유가 있죠. 그래서 이번 기회에 아얘 테스트 코드를 작성하기로 했습니다. 뭘 테스트 해야 하나? 결국 나는 어플리케이션을 ..
2023.10.31 -
Spring Boot JUnit5 : JPA metamodel must not be empty 에러 솔루션
상황 아마 이 에러가 나신 분들은 Controller 에 대한 유닛 테스트 코드를 작성하고 실행하니 에러가 나셨을 겁니다. 많은 분들이 영한님의 Spring Data JPA 강의를 수강 후, 프로젝트 시작 시에 만들어지는 Applicaiton 파일에 붙여둔 @EnableJpaAuditing 어노테이션 때문에 에러가 나게 되는 겁니다. 어째서냐? 원인 Using this annotation will disable full auto-configuration and instead apply only configuration relevant to MVC tests (i.e. @Controller, @ControllerAdvice, @JsonComponent, Converter/GenericConverter, F..
2023.10.31 -
사이드 프로젝트여도 기획이 중요한 이유 (feat. 그게 그저 게시판 프로젝트여도...)
요즘 들어, 간단한 프로젝트를 하더라도 탄탄한 기획 및 계획이 없이 프로젝트를 진행하는 것에 대한 비효율성에 많이 체감을 하고, 그렇게 하지 않으려고 노력합니다. 개발자이지만, 개발이라는 과정은 기획 부터 코드 타이핑까지의 과정이라고 생각을 하게 됩니다. 사실, 오히려 개발이라는 과정은 기획이 전부이지 않을까? 라는 생각도 하고. 최근 알던 기술 및 신기술을 테스트 하기 위한 GitHub - xpmxf4/MonsterBoard Contribute to xpmxf4/MonsterBoard development by creating an account on GitHub. github.com 게시판 프로젝트를 진행 중에 있습니다. 처음 프로젝트를 진행할 때에는 일단 박자! 라는 마인드로 아무런 기획없이 시작했..
2023.10.30