분류 전체보기(109)
-
테스트를 더 빨리 끝내보기 (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 -
HttpMediaTypeNotAcceptableException: Could not find acceptable representation
위와 같은 코드를 작성했고 이 Controller에서 DB 조회 후 MemberResponseDTO에 담아 보내게 되는 단순한 로직이다. 전에는 갑자기 잘 되던 api 가 ResponseDTO로 바꾸고 나서 잘 안 되길래 뭔가 싶더니 HttpMediaTypeNotAcceptableException라는 에러가 났다. 그래서 직접 에러를 검색해 보니, 클라이언트가 받을 수 있는 response를 만들 수 없다는 에러이다. 실제로 postman에서도 다음과 같은 에러가 나온다. 하지만 로그를 보면 즉, DB에 쿼리를 하는 과정까지는 문제가 아니었음을 알 수 있다. 그렇다면 쿼리를 하고 나서 클라이언트에게 올바를 형태를 주지 못한다는 것이고, 그래서 DTO를 봤더니 @Getter 가 없었다. 여러분은 꼭 @Ge..
2023.10.30 -
H2 console, Access denied for user 'root'@'localhost' (using password: NO) 28000/1045
강의 중에 H2 console로 mariadb에 접속을 해야 하는 일이 있었다. 위와 같이 입력후 `Test Connection` 을 누르니 다음과 같은 에러가 났다. 비밀번호를 입력을 했음에도 불구하고 비밀번호가 틀린것도 아니고 using password: NO 라니 그래서 뭔가 하고 GPT 한테 두드렸더니 버전 문제가 있을수도 있다고 하는 걸 보고 내 build.gradle 파일을 확인해 봤더니 버전이 명시적으로 적혀져 있었다. 내 스프링 부트에 뒤떨어진 버전인가 하고 이렇게 바꾸고 나니, 스프링 부트가 3.1.4. 를 import 해왔고 다시 실행해 보니 아주 잘된다! 결론 비밀번호를 입력해도 값이 넘어가지 않으면 드라이버 버전 호환을 따져보자
2023.10.25 -
IntelliJ 메모리 설정, 메모리 더 할당하기
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의 Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해 www.inflearn.com 요새 MSA 강의를 듣는 중에 마주친 현상이다. MSA에 대해 배우다 보니 한 번에 시동시키는 Spring Application 이 5개이다 intelliJ 가 원래 워낙 메모리를 많이 잡아먹기는 한다만 그래도 M1 air 살 때 돈 더 내서 메모리를 16GB로 맞춰서 뭔 프로그램이든 앵간하면 다 돌릴 수 있을 거라고 생각했는 데 터져버렸..
2023.10.17