spring test4 flatExtracting 활용해서 내부 리스트 내용 검증하기 필자는 List 내용을 검증할 때 보통 extracting과 contains 관련 메서드를 활용을 하는데, 가끔 List 내부에 있는 List까지 검증해야 하는 경우가 있다. 이런 경우 일반적인 extracting 메서드를 사용하면 검증에 실패한다. @Builder @Getter public static class ShibaDto { private Long id; private String name; private List elementList; } @Builder @Getter public static class Element { private Long id; private Long age; private List innerElementList; } @Builder @Getter public stati.. 2023. 12. 3. 전체 통합 테스트 시간 속도를 증가시키는 Spring Test Context Caching 😂 배경 필자는 프로젝트를 진행하면서 통합 테스트 코드를 작성할 때 각 케이스마다 테스트 메서드를 작성하고 실행하고, 메서드 작성이 적당히 마무리되면 클래스 내에 있는 모든 테스트 메서드를 실행시켜 보는 방식으로 진행해 왔다. 그러다가 테스트 코드가 어느 정도 양이 쌓였을 때 전체 테스트를 돌렸는데, 시간이 굉장히 오래 걸리는 것을 확인하고는 충격을 받았다. 그렇게 전체 테스트 코드 수행 속도에 대해 고민을 하게 되었고, Context Caching에 대해 알게 되었다. [ Context Caching ] 스프링 테스트 프레임워크는 ApplicationContext가 생성되면 이를 캐시에 저장하고, 만약 재사용이 가능한 경우라면 다른 테스트를 돌릴 때 이를 재사용한다. 이처럼 테스트에서 띄운 컨텍스트를 .. 2023. 11. 8. @TempDir 활용해서 파일 테스트 코드 작성하기 🤔 배경 외부 서비스에서 매일 특정 시간에 배치를 통해 전달되는 csv 파일을 읽는 배치 프로그램을 구현한 뒤, 파일 읽는 부분을 검증하기 위해 단위 테스트 코드를 작성하려고 하는데.. 파일 관련 테스트 코드는 처음이라 "파일은 어떻게 반복적인 테스트 코드를 작성해야 될까?"라는 고민을 하게 되었고, 관련 내용을 찾아보며 알게 된 @TempDir이라는 걸 활용해 보게 되었다. 해당 경험을 바탕으로 @TempDir을 통한 테스트 코드 작성 법에 대해 공유해보고자 한다. 1. @TempDir 이란 - Junit에서 지원하는 임시 디렉터리를 생성용 테스트 어노테이션 - 개별 테스트 또는 테스트 클래스의 모든 테스트에 대해 임시 디렉터리를 만들고 정리할 수 있다. - 테스트할 때 직접 파일을 생성하고 삭제하는 .. 2023. 9. 25. Hamcrest 라이브러리 Matcher를 활용하여 JUnit 테스트 가독성 향상하기 JUnit 테스트의 가독성을 높일 수 있도록 Hamcrest에서 제공하는 몇 가지 Matcher 활용법에 대해 소개한다. 0. 준비 우선, 최신 버전의 hamcrest 라이브러리를 받는다. (현재 최신 버전은 2.2) 참고로 스프링에서는 기본적으로 assertj와 함께 해당 라이브러리를 제공한다. org.hamcrest hamcrest test 그다음 assertThat + hamcrestMatcher 조합을 통해 가독성 있는 테스트를 해본다. assertThat의 정적 메서드 파라미터의 첫 번째 인자는 검증하고자 하는 값, 두 번째는 Matcher를 사용한다. * 여기서 assertThat은 hamcrest 패키지에 있는 assertThat을 사용한다. public static void assertTh.. 2023. 1. 29. 이전 1 다음