인프런 커뮤니티 질문&답변

cjkimhello97님의 프로필 이미지
cjkimhello97

작성한 질문수

쥬쥬와 함께 하루만에 끝내는 스프링 테스트

Kafka 테스트하기

강의를 수강하면서 2가지 질문이 생겼습니다

작성

·

30

·

수정됨

0

안녕하세요 쥬쥬님의 강의를 보면서 테스트 코드 작성에 도움을 많이 받고 있습니다. 감사합니다.

 

질문이 있어서 글을 올려드립니다.

 

질문1.

application.yml 에서 mysql, redis, kafka 의 호스트를 컨테이너 이름으로 지정해주면 굳이 IntegrationTestInitializer 정적 클래스의 initialize() 메서드를 구현해 동적으로 호스트와 아이피를 지정할 필요가 없을 것이라고 생각했습니다. 왜 application.yml 에서 각 모듈의 호스트를 localhost 로 지정해주셨는지 여쭤보고 싶습니다.

 

질문2.

redis, kafka 에 특화된 테스트 컨테이너 모듈을 사용하셨는데, 이러한 모듈을 사용하지 않고 그냥 testImplementation "org.testcontainers:testcontainers:1.19.0" 만을 사용해서 테스트 컨테이너를 구동시켜 테스트해도 되는지 여쭤보고 싶습니다. 예를 들어 이런 식으로 입니다.

스크린샷 2024-10-03 오후 4.33.14.png

 

질문 읽어주셔서 감사합니다.

답변 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

감사합니다.

cjkimhello97님의 프로필 이미지
cjkimhello97

작성한 질문수

질문하기