테스트 환경에서 h2 메모리 db 를 사용하는 방식에 대한 실용성 관련 고민이 있습니다.
프로젝트를 진행하다보면 기본적으로 orm 기반으로 구현을 하지만 일부 예외적인 기능들은 특정 dbms 에 의존적인 쿼리를 직접 실행하는 경우가 불가피하게 발생하는 듯 합니다.
이 경우 특정 dbms(예를들어 mysql) 에 대한 의존성이 발생할 수 밖에 없는데요. 이때 운영 dbms 와 다른 메모리 db(h2) 를 사용하여 테스트를 작성하게 불가능해지고 결국엔 실환경과 동일한 테스트용 db 를 세팅하는식으로 다시 변경하게 되는 듯 합니다. (결국 메모리 db 를 이용한 간단한 테스트를 사용할 수 없는 상황)
실무적인 차원에서 이런 경우 보통 어떤 방식으로 해결하는게 최선일지 궁금합니다.
안녕하세요. JaeWon Lee님, 공식 서포터즈 y2gcoder입니다.
말씀하신 것과 같이 특정 데이터베이스에 종속적인 쿼리를 테스트해야할 때는 테스트 DB의 벤더, 버전 등을 프로덕션 환경과 동일하게 맞춰주는 것이 좋은 것 같습니다. 심지어는 벤더에 따라 JPA에서 생성하는 쿼리가 달라지기도 하는 만큼 DB 쿼리에 대한 정확한 테스트를 위해서라면 테스트 환경용 DB를 구축하는 것에 대해 고려해볼 필요가 있다고 생각합니다.
저도 이에 대해 고민하던 중에 찾아본 TestContainers 라는 라이브러리에 대한 글을 공유해드리고 싶습니다 :)
https://dev.gmarket.com/76
https://helloworld.kurly.com/blog/delivery-testContainer-apply/
감사합니다.
답글