## 테스트
@ExtendWith(SpringExtension.class) 스프링으로 확장하고 싶을때 Junit5
@RunWith(SpringRunner.class) Junit4
## 통합테스트: 모든 bean들을 똑같이 ioc올리고 테스트 하는 것 느림
- @SpringBootTest(webEnvironment = WebEnvironment.MOCK)
WebEnvironment.MOCK 실제 톰켓아니라 다른톰켓으로 테스트
WebEnvironment.RANDOM_PORT 실제 톰켓으로 테스트
- @AutoConfigureMockMvc MockMvc를 Ioc에 등록
- @Transactional 각 테스트가 종료될 때마다 트랜잭션 롤백
## 컨트롤러
- @WebMvcTest 단위테스트
- 최소한의 bean controller, filter, controllerAdvice
## 서비스
- 단위 테스트 service와 관련된 애들만 메모리에 띄우면됨
- @ExtendWith(MockitoExtension.class)
- BookRepository=>가짜객체로 만들 수 있음
- @InjectMocks BookService객체 만들어질때 해당파일에 @Mock로 등록된 모든 애들 주입받는다.
## Repository
- @DataJpaTest 레포지토리 ioc등록해줌->@Autowired
- @AutoConfigureTestDatabase(replace=Replace.ANY)
Replace.ANY가짜디비로 테스트/Replace.NONE 실제 DB로 테스트
- @Transactional