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

Mx님의 프로필 이미지
Mx

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 기능 테스트

Gradle 테스트와 빌드 질문

작성

·

1K

1

Gradle에서 build를 할 경우 특별한 설정을 하지 않으면 test 코드를 사용하여 test가 통과해야만 build를 하더라구요. 그런데 본 강의에서 사용한 테스트 코드 같이 Mock 객체를 쓰지 않고 Spring 기능을 포함한 테스트 코드의 경우는 DB가 동작 중이거나 하지 않으면 test를 통과하지 못하고 build에 실패하는 문제가 있네요.

Build를 할 때에는 이런 test 코드를 제외하는 것이 맞나요? 그런데 test 코드를 넣어야 잘못된 코드가 배포되는 것을 막을 수 있을 것이고 테스트 코드의 필요성은 있다고 생각합니다. 그렇다면 Mock 객체 등을 사용하여 외부 환경에 의존하지 않는 test 코드를 새로 짜는 것이 맞나요?

Jenkins 등으로 배포를 할 때에도 프로젝트 내의 test 코드를 돌리는 것으로 알고 있는데 실제 업무 시에는 테스트 코드를 어떻게 짜고 있는지도 알려주시면 감사하겠습니다.

답변 1

3

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Mx님

Q: DB가 동작 중이거나 하지 않으면 test를 통과하지 못하고 build에 실패하는 문제

-> DB도 테스트에서만 동작하도록 격리해야 합니다. 그래서 테스트 시에 내부 메모리 DB를 사용합니다. 메모리 DB는 해당 애플리케이션에서만 참고해서 사용하기 때문에 문제가 발생하지 않습니다. 또는 도커등을 사용하는 방법도 있습니다.

Q: Jenkins 등으로 배포를 할 때에도 프로젝트 내의 test 코드를 돌리는 것으로 알고 있는데 실제 업무 시에는 테스트 코드를 어떻게 짜고 있는지도 알려주시면 감사하겠습니다.

-> 실제 업무시에도 test 코드를 작성합니다. 단위 테스트, 통합 테스트 모두 사용하고 Jenkins에서 빌드시 테스트를 실행합니다.

감사합니다.

Mx님의 프로필 이미지
Mx

작성한 질문수

질문하기