작성
·
30
·
수정됨
0
안녕하세요 쥬쥬님의 강의를 보면서 테스트 코드 작성에 도움을 많이 받고 있습니다. 감사합니다.
질문이 있어서 글을 올려드립니다.
질문1.
application.yml 에서 mysql, redis, kafka 의 호스트를 컨테이너 이름으로 지정해주면 굳이 IntegrationTestInitializer 정적 클래스의 initialize() 메서드를 구현해 동적으로 호스트와 아이피를 지정할 필요가 없을 것이라고 생각했습니다. 왜 application.yml 에서 각 모듈의 호스트를 localhost 로 지정해주셨는지 여쭤보고 싶습니다.
질문2.
redis, kafka 에 특화된 테스트 컨테이너 모듈을 사용하셨는데, 이러한 모듈을 사용하지 않고 그냥 testImplementation "org.testcontainers:testcontainers:1.19.0"
만을 사용해서 테스트 컨테이너를 구동시켜 테스트해도 되는지 여쭤보고 싶습니다. 예를 들어 이런 식으로 입니다.
질문 읽어주셔서 감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
cjkimhello97님께서 질문하신 내용을 아래와 같이 답변드립니다.
질문 1에 대한 답변:
application.yml에서 각 모듈의 호스트를 localhost
로 지정하는 이유는 주로 테스트 환경에서 로컬 개발 머신에서 테스트를 수행하기 위함입니다. localhost
로 지정하면 개발자는 다른 네트워크 설정 없이 로컬 개발 환경에서 바로 서비스를 테스트할 수 있습니다. 컨테이너 이름을 호스트로 지정하는 경우 Docker 네트워크 내에서만 접근이 가능하므로, 로컬에서 접근할 때 문제를 일으킬 수 있습니다.
질문 2에 대한 답변:
특화된 모듈 없이 org.testcontainers:testcontainers:1.19.0
을 사용해도 테스트 컨테이너를 실행시킬 수 있습니다. 그러나 Redis, Kafka와 같은 특정 서비스에 대해서는 해당 모듈들이 좀 더 최적화된 설정과 유틸리티를 제공하므로 이를 사용하는 것이 더 편리할 수 있습니다. 기본 모듈만 사용하는 경우, 서비스에 필요한 추가 설정이나 초기화를 수동으로 해야 할 수도 있습니다.
추가적으로 이미지에서처럼 Docker Compose를 사용하여 다양한 서비스를 한 번에 기동할 수 있지만, 개별 서비스에 대한 설정은 직접 관리해야 합니다.
Spring Boot Reference Documentation 및 관련 정보를 통해 더 자세한 설정 방법을 확인할 수 있으니 참고해 보시기 바랍니다.
출처 URL
감사합니다.