본문 바로가기

java4

[Spring] Multi-module 프로젝트에서 테스트용 docker-compose 파일 공통화 현재 내가 진행중인 토이 프로젝트의 환경은 아래와 같다.  모듈에 관한 간략한 설명은 아래와 같다. 1. User 모듈사용자 관련 비지니스 로직 및 기능 담당2. Sales 모듈매출 / 매입 관련 비지니스 로직 및 기능 담당3. Common 모듈테스트 코드 외에서 공통적으로 사용되는 기능 담당4. Test 모듈테스트 코드에서 공통적으로 사용되는 기능 담당5. Api 모듈어플리케이션 시작 및 API 관련 기능 담당  그리고 각 모듈은 프로젝트의 최상위 디렉토리에서 빌드되어 docker 환경에서 띄워지게 된다.  따라서 docker-compose.yml, Dockerfile은 모두 최상위 디렉토리에 위치한다. 그리고 실제 docker 환경 기반의 테스트를 위해 "testcontainers" 를 사용한다. 여.. 2025. 3. 11.
[Gradle] Built-in Task의 내부 실행 순서 현재 멀티 모듈로 구성된 프로젝트를 만들어 보고 있다.그런데 최상위 프로젝트에서 build를 실행해도 생성된 jar에 특정 디렉토리 / 파일을 넣는 작업이 되지 않았다. (현재 진행형..)아무리 AI에 물어보고 찾아봐도 나의 프로젝트 상황과 유사한 케이스가 없어서 직접 gradle의 task 단계를 확인하고 그 중간에 jar 파일에 특정 파일 / 디렉터리를 넣는 custom task를 만들어 보기로 했다. (가능하다면 말이다.)그렇게 gradle 빌드 도구의 동작 원리에 대해서 자세히 공부해보게 되었다. 대표적인 built-in task들의 내부적인 task 실행 순서의 확인은 gradle CLI의 로그 옵션을 사용했다.-i 옵션을 넣어서 로그를 찍어보면 "Tasks to be executed: [tas.. 2025. 3. 3.
[Gradle] Gradle Wrapper 개념 정리 토이 프로젝트를 해보고 있는데, 단순히 gradle을 실행하는 것 보다는 gradle wrapper를 사용하는 것이 훨씬 좋다는 의견을 접하게 되었다. 그래서 프로젝트에 gradle wrapper를 적용하면서 이 기능의 개념과 사용 방법, 알면 좋은 기능들을 문서를 보면 정리해보았다. (문서 번역 기반) 더 자세한 내용은 Gradle wrapper 문서를 참고하는 것이 좋을 듯 싶다. Gradle Wrapper개념필요시 선언된 gradle을 다운로드 받을 수 있게 해주는 도구로, 어떤 환경에서든 동일한 gardle 환경으로 프로젝트 빌드를 가능하게 해주는 도구장점사용자의 환경과 무관하게 동일한 gradle 버전으로 빌드 표준화다양한 사용자 및 환경에서의 gradle 버전 제공은 간단하게 wrapper를 .. 2025. 2. 8.
[Spring] mockStatic의 scope 제한을 하지 않아 발생하는 문제 1. 문제 상황Unit test를 위해 static 유틸 클래스를 mock화시켜서 놓았었다.  그런데 빠른 문제 해결을 위해서 자세히 문서를 찾아보지 않고 코드를 작성하다보니, 클래스의 static 메서드로 MockStatic 객체를 선언해버렸다. (나름 코드 중복 제거를 위해,,) 물론 코드를 추가하고 IntelliJ에서 테스트를 한~두번 정도 돌려보아도 문제가 발생하지 않아 넘어갔었었다. (운좋게 MockStatic이 실행되기 전 static 클래스가 실행되었다..) 그런데 시간이 지나 ./gradlew test를 반복하다보니 랜덤하게 유틸 클래스에 대한 테스트가 실패하는 것을 발견하게 되었다. 2. 문제점그렇게 문제의 원인을 찾아가던 중 단순 web search로는 도저히 문제가 해결되지 않아서 공.. 2024. 11. 30.