인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

광호님의 프로필 이미지
광호

작성한 질문수

비전공자도 이해할 수 있는 CI/CD 입문·실전

테스트 코드 빌드오류

작성

·

43

·

수정됨

0

안녕하세요 강의 설명이 너무 좋아 잘 따라가고있습니다ㅎㅎ

저는 Docker + Spring Boot로 배포 자동화 시키는게 목표입니다!

 

문제는 기존에 로컬 DB 연결로 테스트 코드를 작성했었는데요!(개인 프젝)

이 때문에 빌드가 안되다보니 따라가는데 조금 어려움이 있었습니다..!

 

EC2안에 도커로 DB 띄워서 해결해야만 할 것 같은데 이렇게 해도

Docker+Spring Boot 목차를 따라가는데 문제 없을까요?

 

테스트 파일을 삭제하고 싶진 않아서요!!

다른 좋은 방법이 있으시다면 알려주시면 감사하겠습니다!

답변 3

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 광호님! 수업 잘 들어주셔서 감사합니다ㅎㅎ

 

테스트 파일을 유지한 채로 CI/CD를 구성하고 싶으시다면

외부 DB인 RDS에 연결을 시켜서 테스트를 실행시키는 방식도 괜찮은 방법입니다!

다른 방식으로는 Github Actions 환경 자체에서

DB를 Docker로 띄워서 테스트를 실행하는 방법도 있으나

이 방법은 다소 복잡하므로 RDS 사용하는 걸 추천드립니다!

 

이 외에도 궁금한 점 생기시면 질문 또 남겨주세요~~

0

광호님의 프로필 이미지
광호
질문자

빌드라도 되어야 할 것 같아서 RDS를 우선 사용했습니다 ㅎㅎ

0

안녕하세요, 인프런 AI 인턴입니다. 광호님!

Docker와 Spring Boot로 배포 자동화를 진행하면서 로컬 DB에 의존한 테스트 코드 때문에 빌드 오류가 발생하는 상황을 잘 이해했습니다. 이 문제는 프로젝트에서 많이 발생하는 상황인데요, 몇 가지 해결 방법을 생각해볼 수 있습니다.

  1. Testcontainers를 사용한 통합 테스트: Testcontainers는 실제 데이터베이스를 도커 컨테이너로 실행하여 테스트를 수행할 수 있는 라이브러리입니다. 이는 Docker 환경에서 실제 DB를 사용하여 테스트를 수행할 수 있게 해줍니다. 이를 통해 로컬 환경에서처럼 검사할 수 있도록 해서 테스트 파일을 유지할 수 있습니다. 아래 링크는 Testcontainers에 대한 기본적인 소개를 포함하고 있습니다:

  2. Docker Compose를 사용한 로컬 테스트 환경: 개발 중에는 Docker Compose를 사용하여 로컬 환경에 데이터베이스를 띄워놓고 테스트를 할 수 있습니다. Docker Compose 파일에 데이터베이스(예: MySQL, PostgreSQL 등)를 서비스로 추가하여 Spring Boot와 함께 띄울 수 있습니다.

  3. Mocking과 In-memory Database 사용: 로컬 테스트가 필요하지 않으신 경우, h2 또는 hsqldb와 같은 인메모리 데이터베이스를 사용하거나, 데이터베이스 접근을 모킹(Mock)하여 테스트가 가능하도록 하실 수 있습니다.

위의 접근 중 가장 적합한 것은 프로젝트의 실제 요구사항 및 테스트의 종류에 따라 다를 수 있습니다. Testcontainers와 같은 도구를 사용하면 실제로 DBMS의 동작을 검사할 수 있어, 로컬 환경과 유사한 테스트 환경을 꾸밀 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

광호님의 프로필 이미지
광호

작성한 질문수

질문하기