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

이승주님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

섹션 3 질문

해결된 질문

작성

·

79

0

섹션 3 에서 AppConfig를 이용하여 test 코드 수정하는 장면에서 이해가 안되는 부분이 있어서 질문드려요.

Before each가 매 테스트가 실행되기전에 실행되는것 까지는 이해가 가는데 왜 appConfig를 이용하여 구현체 연결해줄때 before each가 사용되어야하는지 잘이해가안갑니다.

이 테스트를 할때 beforeEach를 굳이 사용하여야 하는 이유가있을까요? 제 생각에는 안쓰고 테스트가 여러개 있어도 상관없을거 같은데.

예시와 함께 설명해주시면 이해가 더 잘될 것 같습니다 :)감사합니다

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이승주님께서 질문하신, 테스트 코드에서 @BeforeEach를 사용하여 AppConfig로 구현체 연결을 해주는 이유에 대해 궁금하신 부분에 대해 답변드립니다.

@BeforeEach 애너테이션은 JUnit5에서 테스트가 실행되기 전에 매번 실행해야 하는 메소드를 정의할 때 사용합니다. 이는 각 테스트가 실행될 때마다 공통적으로 필요한 준비 작업을 할 수 있도록 해줍니다. 특히, 스프링과 같은 프레임워크를 사용하는 환경에서 @BeforeEach는 매 테스트 실행 이전에 필요한 컨텍스트(예: 객체의 초기화, 의존성 주입 등)를 설정하는데 큰 도움이 됩니다.

AppConfig를 사용하는 테스트 코드의 경우, @BeforeEach를 통해 각 테스트가 독립적으로 실행될 수 있도록 하며 테스트 간에 서로 영향을 미치지 않게 합니다. 각 테스트 메소드가 실행될 때마다 새로운 AppConfig 인스턴스를 생성하여 사용함으로써, 이전 테스트의 상태에 대한 부담 없이 깨끗한 상태에서 테스트를 시작할 수 있습니다.

아래는 관련된 질문에 대한 기존 답변들입니다:

이 같은 방식을 사용하는 이유 중 하나는 각 테스트가 서로 독립적이어야 하며, 각각의 테스트가 시작할 때마다 ‘깨끗한’ 상태에서 시작해야 한다는 테스트의 기본 원칙 때문입니다. 따라서, @BeforeEach를 사용해 각 테스트 전에 AppConfig 인스턴스를 새롭게 생성하고, 이를 통해 필요한 빈(Bean)들을 새로 생성하여 테스트 간의 격리를 보장하는 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.