참고출처 - https://www.youtube.com/watch?v=SFVWo0Z5Ppo
JUnit - 생명 주기
- JUnit은 어노테이션으로 생명 주기별 테스트 작성을 지원
- @Test : 테스트용 메소드를 표현 (메인 코드 테스트)
- @BeforeEach: @Test의 각 Unit 테스트들이 실행되기 전 실행
- @AfterEach: 각 Unit 테스트들이 실행된 후 실행
- @BeforeAll: JUnit의 테스트 생명주기 가장 처음 실행
- @AfterAll: JUnit의 테스트 생명주기 종료 후 실행
JUnit 메인 어노테이션
@SpringBootTest
- 통합 테스트용
- @SpringBootApplication을 찾고, 하위의 모든 Bean을 로드
- Test용 Context를 만들고, 로드한 Bean을 추가 후 MockBean으로 교체
@ExtendWith
- JUnit4에서 @RunWith로 사용되던 어노테이션
- 메인으로 실행될 Class를 지정
- 위 @SpringBootTest는 기본적으로 @ExtendWith가 추가되어 있음
@WebMvcTest
- 어노테이션에 인자로 전달된 클래스만 로드하여 테스트
- 인자를 지정해주지 않으면 @Controller, @RestController 등 모든 컨트롤러와 연관된 Bean이 로드됨
- 스프링의 모든 Bean을 로드하는 @SpringBootTest 대신 컨트롤러 관현 코드만 테스트할 때 사용
@Autowired
- Controller의 API를 테스트하는 MockMvc 객체를 주입 받음
- perform() 메소드로 컨트롤러의 동작을 확인 가능
- .andExpect(), .andDo(), .andReturn() 과 같은 빌더 형식의 메소드를 같이 활용
@MockBean
- 테스트할 클래스에서 주입 받고 있는 객체에 대해 가짜 객체를 생성
- 해당 객체는 실제 행위는 없음
- given() 메소드를 활용해 가짜 객체의 동작에 대해 정의
@AutoConfigureMockMvc
- Spring.test.mockmvc의 설정을 로드하면서 MockMvc의 의존성을 자동 주입
- MockMvc 클래스는 Rest API 테스트를 할 수 있는 클래스
@Import
- 필요한 Class들을 Configuration으로 만들어 사용
- Configuration Component 클래스도 의존성 설정 가능
- Import된 클래스는 주입으로 사용 가능
'스프링' 카테고리의 다른 글
동시 요청 문제 - ConcurrentHashMap (1) | 2024.02.28 |
---|---|
스프링 테스트 - 통합 테스트와 단위 테스트 (0) | 2024.02.22 |
스프링 테스트 - TDD, JUnit (0) | 2024.02.21 |
[QueryDSL] QueryDSL 설정법(feat.graddle, jpa) (0) | 2024.02.20 |
[Query Dsl] On vs Where (0) | 2024.02.20 |