repostory 테스트 코드 작성 이유 관련 질문
199
작성한 질문수 92
제가 테스트 코드 작성이 처음이라 잘 이해하지 못한 것 같은데요
repository에서 테스트 코드를 작성하는 이유를 잘 모르겠습니다.. given에서 Product를 삽입하는 과정은 DB의 product에 레코드를 삽입하는 과정으로 대체해서 수행할 수 있을 것 같아서요. DB를 통해 확인하지 않고 리포지토리에 대해 테스트 코드를 작성하는 이유가 무엇일까요?
혹시 수동 검증 시 콘솔에서 확인하는 것과 동일하게 직접 사람이 테스트 과정에 개입해야 해서 그러한 것일까요?
답변 2
0
안녕하세요, 도토리 님!
네, 맞습니다. 강의 초반에 말씀드렸던 것처럼, 사람이 개입하는 수동 테스트는 필요한 경우도 있지만, 한계가 있기 때문에 자동화된 테스트가 중요한 것인데요.
우리가 작성한 코드를 검증한다는 측면에서, 의도에 맞게 쿼리가 만들어지고 DB까지 반영되고 있는지를 자동화해서 검증한다고 이해해주시면 됩니다.
물론, Spring Data JPA 에서 제공하는 기본 CRUD 메서드는 그 동작이 보장되어 있기에 굳이 검증하지는 않아도 되고, 그 외에 직접 작성한 JPQL, query method, native query 등을 검증하면 되겠습니다.
도움이 되셨기를 바랍니다.
감사합니다. 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
도토리님, 리포지토리 테스트 코드 작성 이유에 대해서 설명드리겠습니다.
리포지토리에 대한 테스트 코드를 작성하는 이유는 여러 가지가 있지만, 핵심적인 이유는 다음과 같습니다:
단위 테스트의 중요성: 리포지토리 단위의 테스트는 개별 데이터 액세스 기능을 검증합니다. 이는 각 메서드가 의도한 대로 작동하는지 확인할 수 있도록 도와주며, 이는 특히 리포지토리가 복잡한 쿼리 로직을 포함한 경우 중요합니다.
빠른 피드백 루프: 직접 DB에 연결하여 테스트를 수행하면 설정과 데이터 준비에 시간이 많이 소요될 수 있습니다. 반면에 리포지토리 테스트를 통해 더 빠르게 결과를 확인할 수 있습니다.
안전성: 테스트 자동화를 통해 사람이 개입하지 않아도 되는 안정적인 검증 환경을 제공합니다. 이는 시간 절약뿐만 아니라 일관성 있는 테스트 결과를 보장합니다.
종속성 격리: 단위 테스트는 외부 요소와의 종속성을 최소화하여 테스트 환경의 예측 가능성을 높입니다. 리포지토리 테스트를 통해 외부 데이터베이스의 상태에 의존하지 않고도 테스트의 정확성을 유지할 수 있습니다.
변화 감지: 제품 코드의 변경이 리포지토리에 미치는 영향을 즉시 감지할 수 있습니다. 이는 코드 품질을 유지하는 데 중요한 역할을 합니다.
즉, 테스트 코드는 수동 검증보다 더 신속하고 정확하게 반복 가능한 방식으로 리포지토리의 기능을 검증하는 데 유용합니다. 데이터베이스에 직접 접근하여 수동 검증하는 과정은 시간이 많이 걸리고, 실수가 발생할 가능성이 높습니다.
추가로, Spring Framework에서는 리포지토리 테스트를 효율적으로 수행할 수 있는 여러 유틸리티와 테스트 지원 클래스가 제공되고 있습니다. 관련 정보를 Spring Boot Reference Documentation에서 확인하실 수 있습니다:
Spring Boot 테스트 관련 문서
도움이 되셨길 바랍니다! 추가 질문이 있다면 언제든지 말씀해 주세요.
private 상수 테스트 관련 질문
0
82
1
void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??
0
124
2
커버리지는 어떻게 활용하시는지 궁금합니다.
0
159
2
테스트 문서화 질문입니다
0
104
2
단위테스트 질문이 있습니다
0
94
2
컨트롤러는 모킹을 한 이유가 궁금합니다.
0
100
2
ERD 가장자리에 있는 도메인 테스트 질문
0
87
2
DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?
0
132
2
OrderCreateRequest DTO에 대해서 궁금한점
0
101
2
고전파의 테스트 대역 사용 대상, 공유 의존성
0
154
2
계층 관련 질문이 있습니다.
0
137
3
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
1
122
2
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
0
133
2
단위테스트와 통합테스트의 경계가 궁금합니다.
0
227
2
Service+Repository 통합테스트 관련 질문입니다.
0
149
2
OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요
0
183
2
test 용 .yml
0
89
2
throws Exception
0
78
2
카페키오스크 클래스 문의 ,,
0
87
2
Rest docs 문서용 테스트코드를 따로 작성해야 되나요?
0
171
2
테스트 코드에서 필요한 생성자
0
137
1
tearDown 순서
0
115
2
@Builder 생성자 private
0
135
2
@DisplayName gradle / intellJ
0
92
2





