오늘 새로 배운 내용
기존 개발환경 properties에서 설정해 준 redis 설정을 변경하고 테스트를 돌렸더니 테스트가 실패하는 문제 발생 (bean 생성 실패) → 알고보니 테스트 환경의 properties도 개발환경에서 변경한것처럼 redis 설정값을 변경해줘야 했다.
그런데 test환경의 properties는 개발환경과 다르게 redis의 host와 port번호의 value값이 embedded 되어있었다. 어떤 값이 embedded 된 건지 몰라 사수분께 여쭤봤는데 pom.xml에 설정해 준 redis test-container가 설정되어 있다고 하셨고 이 값은 playtika에서 제공하는 testcontainers 오픈소스를 사용 중이라고 하셨다.
즉, 테스트 환경에서는 실제 사용하는 redis가 아닌 빈 redis를 사용해 테스트하기 위함이라고 하셨고 빈 redis생성은 playtika의 도움을 받는 것이다. playtika가 제공하는 testcontainer는 제공하는 오픈 소스 프로젝트 중 하나로 테스트 환경에서의 컨테이너 사용을 간편하게 해주는 도구이다.
예를 들어 redis 같은 외부 db와 연결해서 테스트해야 할 때, 외부 시스템(redis)에 대한 컨테이너를 만들어서 테스트할 수 있도록 도와준다.
playtika testcontainers 오픈 소스 코드는 아래 github에서 확인할 수 있다.
https://github.com/PlaytikaOSS/testcontainers-spring-boot
결론
근데 내가 설정하려는 redis key값은 테스트할 때 mocking 할 것이기 때문에 서비스단에서 redis에서 호출하려는 key값만 테스트 환경 properties에 존재하도록 설정해 주면 어떤 값이 embedded 되든 상관없었지만 테스트할때 유용한 외부 시스템에 대한 컨테이너를 제공해 주는 playtika의 testcontainers을 알게되었다.
'성장이야기 > TIL' 카테고리의 다른 글
[개발일지] 230516 Java Map.Entry 사용하기 (0) | 2023.05.16 |
---|---|
[개발일지] 230511 @JsonAutoDetect을 이용해 직렬화, 역직렬화 (0) | 2023.05.11 |
[개발일지] 230509 @Mock, @MockBean, @InjectMocks의 관계 (0) | 2023.05.09 |
[개발일지] 230504 IN절 안의 foreach문 (0) | 2023.05.04 |
[개발일지] 230502 flatMap과 동적쿼리 foreach문 (0) | 2023.05.02 |