통합 테스트 용도로 사용됨
@SpringBootApplication을 찾아가 하위의 모든 Bean을 스캔하여 로드함
그 후 Test용 Application Context를 만들어 Bean을 추가하고, MockBean을 찾아 교체
JUnit4에서 @RunWith로 사용되던 어노테이션이 ExtendWith로 변경됨
@ExtendWith는 메인으로 실행될 Class를 지정할 수 있음
@SpringBootTest는 기본적으로 @ExtendWith가 추가되어 있음
( )안에 작성된 클래스만 실제로 로드하여 테스트를 진행
매게변수를 지정해주지 않으면 @Controller, @RestController, @RestControllerAdvice 등 컨트롤러와 연관된 Bean이 모두 로드됨
스프링의 모든 Bean을 로드하는 @SpringBootTest대신 컨트롤러 관련 코드만 테스트할 경우 사용
Controller의 API를 테스트하는 용도인 MockMvc 객체를 주입 받음
Perform()메소드를 활용하여 컨트롤러의 동작을 확인할 수있음
andExpect(), andDo(), andReturn() 등의 메소드를 같이 활용함
테스트할 클래스에서 주입 받고 있는 객체에 대해 가짜 객체를 생성해주는 어노테이션
해당 객체는 실제 행위를 하지 않음
given() 메소드를 활용하여 가짜 객체의 동작에 대해 정의하여 사용할 수 있음
spring.test.mockmvc의 설정을 로드하면서 MockMvc의 의존성을 자동으로 주입
MockMvc 클래스는 REST API 테스트를 할 수 있는 클래스
필요한 Class들을 Configuration으로 만들어 사용할 수 있음
Configuration Component 클래스도 의존성 설정할 수 있음
Import된 클래스는 주입으로 사용 가능