JUnit(5)
-
Java @Scheduled: 매시 정각에 실행되는 Cron 표현식 테스트하기
배경 @Transactional @Scheduled(cron = "0 0 * * * *") public void updatePopularPosts() { // 새로운 상위 10개 게시물 추출 List top10Posts = postRepository.findTop10Posts(); // 기존의 data 삭제 popularPostRepository.deleteAllInBatch(); // 변환 후 새로운 data 삽입 List popularPosts = convertToPopularPost(top10Posts); popularPostRepository.saveAll(popularPosts); } 위 함수에 대한 테스트 코드를 작성해보려 하다 이런 글을 쓰게 되었습니다. 테스트의 목적은 매 정시에 함수가 실..
2023.12.20 -
테스트를 더 빨리 끝내보기 (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 -
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