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

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 핵심 원리 - 기본편

관심사의 분리

Test 파일 실행시 BeforeEach 관련 질문드립니다~

해결된 질문

작성

·

253

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
안녕하세요 김영한 강사님께서 보실지 모르겠지만
학원에서 스프링 공부하는데 이해도 안가고 정말 막막했는데 때마침 김영한 강사님 강의를 듣고 바로 결제하게 되었습니다,,ㅠㅠ
김영한강사님께서는 정말 단순하고 별거아닌 코드라고 생각하실지 모르겠지만, 제기준,, 코드 짜시는거 보고 감탄중입니다,,
 
그동안 제가 코드짜는 방식이 한 메서드에 기능 다 때려넣고 귀찮다는 이유하나만으로 자원반환(close)도 제대로 안해주는 방식으로 코딩을 했어서 반성중입니다....
 
다름이 아니라, 수업중 Test 실행시에 beforeEach매서드를 통해서 AppConfig 객체를 생성하는 방식으로 작성하셔서 궁금한 점이 있어서 질문드립니다!
 
(아래 코드 내용은 강사님께서 수업중에 작성하신 코드를 그대로 작성한코드입니다)
 
public class OrderServiceTest {
    MemberService memberService;
    OrderService orderService;

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

    @Test
    void createOrder(){
       

        Member memberA = new Member(1L,"memberA",Grade.VIP);
        memberService.join(memberA);
        Order o = orderService.createOrder(memberA.getId(),"a",10000);

        Assertions.assertThat(o.getMemberId()).isEqualTo(memberA.getId());


    }
}
 
Test 진행시 beforeEach 매서드를 생성하는 대신,
AppConfig를 전역으로 new 시켜서 실행시키는 방식으로 진행하면 안될까요? 별 오류는 발생하지 않는데 현재 Test가 워낙 단순하고 소수이다보니까 별 문제없는거같기도 합니다,,,,,
저의 방식대로 하면 어떤 문제가 발생하는지,,궁금합니다,,,,
 
Test시 BeforeEach를 먼저 실행한다고 했는데 단순하게,, AppConfig 객체를 전역으로 new 시키고 Test 하는 메서드에
memberService와 orderService를 먼저 넣으면
굳이 BeforeEach를 생성안해도 될거같다는 생각이 들어서요
 
(하기 코드 참고 부탁드립니다!)
 
public class OrderServiceTest {
    AppConfig appConfig = new AppConfig();

    MemberService memberService;
    OrderService orderService;

    @Test
    void createOrder(){
        memberService = appConfig.memberService();
        orderService = appConfig.orderService();

        Member memberA = new Member(1L,"memberA",Grade.VIP);
        memberService.join(memberA);
        Order o = orderService.createOrder(memberA.getId(),"a",10000);

        Assertions.assertThat(o.getMemberId()).isEqualTo(memberA.getId());


    }
}
감사합니다

답변 1

1

안녕하세요. 고하늘님, 공식 서포터즈 David입니다.

만약 테스트 케이스가 많아진다면 매번 appConfig에서 호출하는 코드를 테스트 메서드 상단에 추가해야 합니다.

이런 반복을 beforeEach로 제거할 수 있습니다.

감사합니다.

역시.... 제 생각이 정말 단순하고 좁았네요! 빠른 답변 정말 감사합니다!

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기