해결된 질문
작성
·
54
·
수정됨
0
지금까지
ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
테스트 코드 만들때 수동으로 빈을 등록하도록 만든 설정(AppConfig)을, 컨테이너를 만들어 빈 들을 등록하고, 의존관계를 주입한 환경에서 테스트 진행.
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
컴포턴트 스캔 애노테이션을 포함하고 필터로 범위를 제한한 설정으로 컨테이너를 만들어서 빈들을 등록하고 의존관계를 주입한 환경에서 테스트 진행
그래서 테스트에서 만든 컨테이너는
AppConfig ,AutoAppConfig 로 만들어진 빈들로만 구성된 컨테이너가 만들어지는 거죠.
이렇게 설정 클래스를 통한 빈들로만 구성된 컨테이너를 테스트에서 사용 하는 이유는 ,내가 설정한 (복잡한 로직의 수동 빈 등록이 필요한) 설정클래스들만 테스트에서 확인하기 위함이죠?
그렇다면 실무에서는
@SpringBootApplication 애노테이션이 있는 메인클래스가 있어서 @Comopenet로 자동 등록된 빈들과 AppConfig 처럼 설정 클래스로 수동 등록된 빈들은 모두 같은 컨테이너에 보관될거잖아요.
테스트에서는 이렇게 compnent로 자동 구성된 빈들로만 이루어진 컨테이너를 호출하거나, 지금까지 진행한 설정클래스들을 통한 빈들로만 이루어진 컨테이너를 호출하거나, 전체적인 빈들이 있는 컨테이너를 호출하는 등 다양하게 테스트를 진행하겠죠?
각각의 테스트에서 컨테이너를 호출하는 방법이 무엇인가요?
뒤에 강의들에서 이러한 질문들을 해결하는 개념들이 나오나요?
답변 2
1
1
안녕하세요, 인프런 AI 인턴입니다. horizon님.
스프링에서 테스트를 진행할 때 컨테이너를 어떻게 호출하고 관리할 수 있는지에 대한 질문을 주셨네요. 스프링의 다양한 테스트 방법을 통해 스프링 컨텍스트를 필요한 범위에 따라 다양하게 설정할 수 있습니다.
AnnotationConfigApplicationContext 사용:
AnnotationConfigApplicationContext
를 통해 수동으로 설정 클래스를 등록하여 컨테이너를 구성합니다. 이 방법은 주로 특정 설정 클래스나 특정 빈들을 따로 테스트하고 싶을 때 사용합니다.@SpringBootTest 사용:
@SpringBootTest
는 스프링 부트 애플리케이션 전체 컨텍스트를 불러와 테스트할 때 사용합니다. 모든 컴포넌트와 수동 등록 빈들이 포함된 전체 컨텍스트가 로드됩니다. 이 옵션은 전체 애플리케이션 흐름이나 통합 테스트에 적합합니다.@WebMvcTest 사용:
@WebMvcTest
는 특정 컨트롤러를 테스트하기 위해, 웹과 관련된 빈들만 로드하는 데 사용됩니다. 이는 라이트한 테스트를 지원하며, 웹 레이어에 대한 테스트에 유용합니다.@MockBean 사용:
@MockBean
을 사용하면 기존 빈을 모킹하여, 테스트에서 해당 빈의 작동을 확인할 수 있습니다.이러한 개념들은 스프링 강의 후반부에서 조금 더 자세히 다뤄질 수 있으니, 편하게 이어서 강의를 수강해 보시길 추천드립니다.
이해를 돕기 위해 관련된 글도 참고해보시면 도움이 될 것입니다:
- Spring Boot Testing Overview by Baeldung
- Spring Testing with Contexts by Official Spring Doc
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
영한님 답변 감사합니다! 로드맵 따라서 이해했습니다. 제가 강의를 듣고 궁금했던 점들을 뒤에 강의에서 설명해주시는게 너무 신기합니다~