인프런 커뮤니티 질문&답변
Service 소형 테스트 질문
작성
·
37
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
yhwjd님, 테스트를 소형 단위로 진행할 때 Fake 객체를 사용하는 것에 대한 고민이 있으신 것 같습니다.
Fake 클래스는 실제 의존성을 대체하여 테스트의 독립성을 높이고, 테스트를 빠르게 수행할 수 있도록 도와줍니다. 실제 데이터베이스를 사용하지 않기 때문에 환경 설정이나 외부 리소스의 가용성에 직접 영향을 받지 않는다는 장점이 있습니다. 이는 특히 빠른 피드백 루프가 필요한 단위 테스트(Unit Test)에서 유용합니다.
하지만 H2 데이터베이스를 띄워 테스트하는 방식, 즉 더 실질적인 환경에서의 테스트는 통합 테스트(Integration Test)로 효과적일 수 있습니다. 이는 실제 데이터베이스 환경에서의 상호작용을 확인할 수 있기 때문입니다. 실제 데이터베이스를 사용함으로써 가짜 객체와의 동작 차이를 줄일 수 있습니다.
실제로, 두 접근 방법은 서로 보완적인 관계에 있다고 할 수 있습니다. Fake 객체를 사용하여 유닛 테스트를 빠르게 수행하고, H2와 같은 인메모리 데이터베이스를 사용하여 통합 테스트를 수행함으로써 전체적인 테스트 커버리지와 신뢰성을 높일 수 있습니다.
그러므로, 구현에 따라 다를 수 있는 Fake 객체 사용의 한계를 통합 테스트로 보완하는 것이 보다 효과적인 테스트 방법이라고 할 수 있습니다. 더 자세한 내용은 Spring Boot의 테스트 가이드를 참고하시는 것도 좋습니다.
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.testing.spring-applications





