[개발일지] 230510 Playtika testcontainers

오늘 새로 배운 내용

기존 개발환경 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

 

GitHub - PlaytikaOSS/testcontainers-spring-boot: Container auto-configurations for Spring Boot based integration tests

Container auto-configurations for Spring Boot based integration tests - GitHub - PlaytikaOSS/testcontainers-spring-boot: Container auto-configurations for Spring Boot based integration tests

github.com

 

결론

근데 내가 설정하려는 redis key값은 테스트할 때 mocking 할 것이기 때문에 서비스단에서 redis에서 호출하려는 key값만 테스트 환경 properties에 존재하도록 설정해 주면 어떤 값이 embedded 되든 상관없었지만 테스트할때 유용한 외부 시스템에 대한 컨테이너를 제공해 주는 playtika의 testcontainers을 알게되었다.