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

최한태님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

관심사의 분리

테스트에서 @BeforeEach 안에 AppConfig를 생성하고 사용하는 이유

해결된 질문

작성

·

628

1

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

안녕하세요 단위 테스트 도중에 @BeforeEach 사용시 어떤 이점이 있는지 궁금해서 질문 드립니다.

public class orderServiceTest {

    AppConfig appConfig = new AppConfig();
    MemberService memberService = appConfig.memberService();
    OrderService orderService = appConfig.orderService();
    }

이렇게 사용하는 것보다 @BeforEach 어노테이션을 사용해서

public class orderServiceTest {
    MemberService memberService;
    OrderService orderService;

    @BeforeEach
    public void beforeEach(){
        AppConfig appConfig = new AppConfig();
        memberService = appConfig.memberService();
        orderService = appConfig.orderService();
    }

이렇게 작성하는게 좋다고 말씀하셨는데

제 생각에는 그 이유가 1번 처럼 작성하면 다른 테스트 진행시 기존의 선언되어 있는 meberService 객체에 남아있는 데이터?가 있어서 오류가 날 수 있어 초기화와 같은 목적으로 @BeforeEach를 사용하여 매번 테스트를 실행시킬때마다 새롭게 의존관계 주입을 하는 것 같은데

정확한 의미를 알고 싶어서 질문 드립니다.

답변 1

1

안녕하세요, 최한태 님. 공식 서포터즈 y2gcoder 입니다.

단위 테스트 코드에서 @BeforeEach를 통해 매번 데이터를 초기화해주는 부분에 대해서 질문해주셨습니다.

말씀해주신 것처럼 매 테스트마다 데이터를 초기화해주기 위해서입니다. 테스트의 특성상 다른 테스트에 영향을 받지 않고 각 테스트들을 독립적으로 실행하기 위함이라 이해해주시면 될 것 같습니다!

감사합니다.