개발/Spring Framework

    [Spring] 서비스 코드를 테스트하기 어렵다면?

    [Spring] 서비스 코드를 테스트하기 어렵다면?

    Spring 프레임워크 기반으로 서비스를 개발할 때 간혹 단위 테스트하기 어려운 경우를 마주합니다. 저는 S3 리소스 연동 모듈을 사용하여 서비스를 개발한 적이 있는데 테스트 코드를 작성할 때 서비스 클래스가 S3와 강한 의존성을 갖고 있어 테스트하기 어려웠던 경험이 있습니다. 리소스를 효율적으로 사용하기 위해서 반드시 연동을 테스트해야 하는 경우가 아니라면 임시 모듈로 교체할 필요가 있습니다. 밑에 샘플 코드를 통해 비슷한 예시를 들 수 있습니다. 샘플 코드 @Service public class GithubService { public RepositoryInformation getInformation(String owner, String repositoryName) throws IOException ..

    [Spring Data JPA] saveAll은 만능일까?

    [Spring Data JPA] saveAll은 만능일까?

    개발 환경 필자의 개발 환경에 맞추어 포스팅되었으니 참고 바랍니다. Java / Gradle Spring Boot 2.7.8 Spring Data JPA MySQL 8.0.24 개요 이번에 간단한 팀 프로젝트를 진행하면서 Spring Data JPA를 사용했습니다. 평소에 자주 애용하던 KREAM의 백엔드 서버를 분석하고 구현하는 프로젝트였는데, 필자는 이 프로젝트에서 스타일 파트를 맡았습니다. 스타일은 일종의 인스타그램과 매우 비슷했는데, 특이한 점으로는 KREAM에서 거래 중인 상품을 태그 할 수 있다는 점이었습니다. 해당 도메인의 피드 등록 기능을 개발하던 중 피드에 들어가는 해쉬태그(#)나 상품들을 별도 테이블로 분리해서 관리할 필요가 있었습니다. 테이블이 분리되었기 때문에 하나의 피드가 등록될 ..

    TestContainers가 Docker 감지 못 하는 문제 (Mac)

    TestContainers가 Docker 감지 못 하는 문제 (Mac)

    발생 TestContainers를 활용해서 통합 테스트를 작성하고 실행하는데 오류가 발생했습니다. 분명히 도커는 백그라운드에 실행 중인데 말이죠... 에러 Could not find a valid Docker environment. Please see logs and check configuration 해결 https://www.testcontainers.org/supported_docker_environment/ 테스트 컨테이너 홈페이지에서 도커 환경과 관련한 내용을 읽어보다가 답을 찾았습니다. Mac OS의 경우에 위처럼 도커를 찾지 못할 경우 아래의 명령어를 터미널에 입력하면 될 겁니다. sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock