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

hci inha님의 프로필 이미지
hci inha

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 서비스 테스트

회원서비스테스트 BeforeEach AfterEach

작성

·

372

0

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

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

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

[질문 내용]
여기에 질문 내용을 남겨주세요.

  1. MemberServiceTest에서 BeforeEach에서 새로 객체를 불러오고 AfterEach에선 다음 테스트를 위해 저장된걸 지우는걸로 이해를 했는데

    어차피 객체를 새로 만드는데 지우는 과정이 왜 필요한건가요?

     

  2. 그래서 AfterEach 코드를 지워봤는데 회원가입()에서부터 막히더라고요

    AfterEach는 테스트가 끝나고 실행되는건데 왜 첫번째 테스트부터 작동에 문제가 생기는건가요?

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

MemberServiceTest에서 BeforeEach에서 새로 객체를 불러오고 AfterEach에서 저장된 객체를 지우는 이유는 각각의 테스트 케이스를 독립적으로 실행하기 위해서입니다.

테스트를 독립적으로 실행하기 위해서는 각각의 테스트가 서로에게 영향을 주지 않도록 해야 합니다. BeforeEach와 AfterEach는 실행 순서상 첫번째 테스트 이전과 마지막 테스트 이후에 실행되는 메서드입니다. BeforeEach에서는 새로운 객체를 생성하여 테스트를 위한 초기 상태를 설정하고, AfterEach에서는 테스트가 실행된 후에 생성된 객체를 정리하는 역할을 합니다.

AfterEach를 제거하면 첫번째 테스트 이후에 객체가 계속해서 유지되므로 두번째 테스트부터는 이전 테스트 결과에 영향을 받을 수 있습니다. 따라서 첫번째 테스트부터 작동에 문제가 발생할 수 있습니다.

이렇게 각각의 테스트를 독립적으로 실행하여 안정성을 보장하고 예상치 못한 결과를 방지할 수 있습니다.

구체적인 코드가 없어서 정확하게 어떤 문제가 발생하는지 파악하기 어렵지만, BeforeEach와 AfterEach를 사용하여 테스트를 독립적으로 실행하는 것이 좋습니다. 만약 테스트가 정상적으로 작동하지 않는다면, MemberServiceTest 내부의 코드를 중심으로 디버깅해보시는 것을 추천드립니다.

더 궁금한 점이 있다면 추가로 질문해주세요. 좋은 하루 보내세요!

hci inha님의 프로필 이미지
hci inha

작성한 질문수

질문하기