안녕하세요 토비님!
116
작성한 질문수 58
안녕하세요 토비님! 강의를 보다가 궁금한 점이 생겨서 질문 드립니다.
테스트 코드 작성시 EmailSender같은 경우나 , 외부 요인(?) 같은 경우에 저는 테스트 코드가 외부요인에 의해 영향받기를 원하지 않아 @MockitoBean을 사용하는데요 그런데 강의에서는 왜 @MocktioBean을 사용하시지 않고 @TestConfiguration을 사용하셨는지 궁금합니다!
감사합니다!
답변 2
1
@MockitoBean이 테스트 작성에 유용한 방법이지만 단점도 있습니다.
해당 빈이 목/스텁으로 어떻게 동작을 해야하는지 매번 테스트에 정의를 해줘야 합니다. 또, 목 인스턴스를 만드는 작업이 테스트 런타임에 일어나는데 이게 꽤 무거운 작업이라 테스트 수행속도가 느려집니다.
그럼에도 @MockitoBean은 해당 의존 오브젝트가 테스트 목적에 따라 다른 방식으로 동작해야 하는 경우엔 디테일한 설정을 할 수 있기 때문에 유용합니다.
저는 EmailSender 같은, 거의 대부분의 테스트에서 한번씩은 실행이 되지만 테스트마다 동작을 다르게 구성할 필요가 없는 케이스는 @MockitoBean 대신 테스트용 빈을 따로 정의해서 사용하는 걸 선호합니다.
0
안녕하세요, 인프런 AI 인턴입니다. wnsqud70님.
테스트 코드 작성시 외부 의존성을 Mocking하는 방법은 여러 가지가 있으며, 상황에 따라 적절한 방법을 선택할 수 있습니다.
@TestConfiguration 사용:
- 이 방법은 특정 테스트 환경에서만 유효한 설정을 제공하기 위해 자주 사용됩니다.
- 커스텀한 Bean 설정이 필요한 경우, 테스트 환경에 맞게 재정의할 수 있는 유연성을 제공하기 때문에 유용합니다.
- 이 방법은 특정 테스트 환경에서만 유효한 설정을 제공하기 위해 자주 사용됩니다.
@MockitoBean 사용:
- Mockito를 사용하여 외부 의존성을 Mock으로 대체하여 테스트 코드가 외부 요인에 영향을 받지 않도록 해줍니다.
- MockBean을 사용할 경우, 필요한 최소한의 Mock 행동만 정의하여 빠르고 간단한 단위 테스트를 작성할 수 있습니다.
- Mockito를 사용하여 외부 의존성을 Mock으로 대체하여 테스트 코드가 외부 요인에 영향을 받지 않도록 해줍니다.
강의에서 @TestConfiguration을 사용한 이유는, 아마도 강의 내용에서 이러한 설정을 직접 제어하고, 커스텀한 설정을 보여주기 위한 의도가 있지 않을까 생각됩니다. @MockitoBean 은 빠르게 외부 요인을 Mocking할 때 유용하지만, 스프링 컨텍스트의 전반적인 설정을 제어하는 데는 @TestConfiguration이 더 적합한 경우가 있습니다.
만약 스프링에서의 설정이나 의존성 관리의 이해도를 높이는 것을 목표로 수업이 구성되어 있다면, Test Configuration을 통한 테스트가 더 자연스러울 수 있습니다.
아래 관련된 강의 질문을 참고하시면 도움이 되실 것 같습니다:
- @TestConfiguration 관련 설명과 실제 동작이 다른 부분이 있는 것 같습니다.
테스트 환경을 설정할 때, 어떤 상황에 어떤 방법을 사용하는 것이 최적일지를 이해하고 선택할 수 있도록 다양한 접근을 경험해보시는 것을 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
도메인 모델에서 관계와 규칙을 구분하는 방법
0
37
2
헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?
0
115
2
어댑터에서 도메인에 직접 의존하는 경우에 대해
0
116
2
Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.
0
103
2
MemberService와 EmailSender 책임 분리에 대한 질문
0
102
2
NonNullApi를 NullMarked로 대체하라고 합니다.
0
123
2
39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.
0
71
2
Repository Adapter 설계에 대해 피드백을 부탁드립니다
0
105
2
헥사고날 part2 강의 출시 예정일 문의 드립니다.
0
244
2
PT 문의사항
0
97
1
초기 어플리케이션 구동 시 compose.yml 파싱 오류
0
147
2
애플리케이션의 JPA 리턴과 도메인 모델
0
125
2
애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의
0
133
2
페이징 처리를 해야한다면 어떻게 해야할까요?
0
187
2
애그리거트의 repository
0
116
2
Domain Expert가 정확히 어떤 역할을 하는 사람인가요?
0
228
1
회원 애플리케이션 서비스 테스트 (1)
0
102
2
정적 팩토리 메서드 관련 질문드립니다!
0
103
2
spotbug + @NonNullApi 로만 Null 방어가 될까요?
0
127
2
required 포트에 관해서
0
90
2
혹시 다음 편은 언제쯤 오픈할까요?
0
163
2
서비스 단위 테스트 코드 작성
0
94
2
domain 모듈에 entity를 정의한다고 했을때
0
95
2
여러 엔티티의 조합으로 리포트를 제공해야할 때
0
78
2





