상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - JUnit의 @ExtendWith와 @BeforeEach의 차이점은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
JUnit에서 @ExtendWith와 @BeforeEach는 모두 테스트 실행 과정에 개입하기 위한 어노테이션이지만, 그 목적과 역할이 다릅니다. 1. @ExtendWith - 역할: JUnit 5에서 확장(Extension)을 적용하기 위해 사용하는 어노테이션입니다. 확장은 테스트 실행 시점에 동작하는 추가 기능을 삽입하는 메커니즘으로, 테스트 라이프사이클에 맞춰 훨씬 다양하고 복잡한 동작을 수행할 수 있게 해줍니다. - 사용 사례: 예를 들어, MockitoExtension(@ExtendWith(MockitoExtension.class))를 달면 Mockito의 mock 초기화가 자동으로 이루어지며, SpringExtension을 달면 스프링의 테스트 컨텍스트가 연동됩니다. - 특징: 하나 이상의 확장 클래스를 지정할 수 있고, 테스트 클래스 전체 혹은 개별 테스트 메<a href='https://sangseek.com/sangseeks/소드/ko'>소드</a>에 적용할 수 있습니다. 확장 방식이므로 내부적으로는 테스트 실행 전후 특정 이벤트를 후킹하고 추가 작업을 수행합니다. 2. @BeforeEach - 역할: 테스트 메소드가 실행되기 직전에 호출되는 메소드를 지정하기 위한 어노테이션입니다. 즉, 테스트 전 초기화나 공통 설정 작업을 수행하는 용도입니다. - 사용 사례: 테스트에서 공통으로 필요한 객체를 생성하거나 상태를 초기화할 때 사용합니다. 예를 들어 테스트용 데이터 초기화, mock 객체 초기화, 웹 드라이버 세팅 등 간단한 준비 작업을 여기에 작성합니다. - 특징: 테스트 클래스 내에서 메소드에 붙이며, 각 테스트 메소드 실행 전에 반복적으로 호출됩니다. 단순히 메소드 실행 시점을 지정하는 것이고, 테스트 실행 자체를 확장하거나 제어하지는 않습니다. 요약하자면, @ExtendWith는 테스트 실행의 프로세스 자체에 후킹하여 <a href='https://sangseek.com/sangseeks/확장기능/ko'>확장기능</a>을 추가하는 메커니즘으로, 보통 프레임워크나 라이브러리 차원에서 기능을 통합할 때 사용합니다. @BeforeEach는 테스트 메소드 실행 전에 호출되는 초기화 루틴을 간단히 지정하는 용도로, 테스트 내부 상태 설정에 집중합니다. 따라서 둘은 목적과 적용범위가 다르며, 경우에 따라 함께 쓰이기도 합니다. 간단히 말해, @BeforeEach는 “이 테스트 시작 전에 이 메소드를 실행하라”는 사전 준비용이며, @ExtendWith는 “테스트 실행 절차를 확장하거나 바꾸는” 더 고수준의 기능 확장용입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기