1. @SpringBootTest
1) 개념
통합 테스트를 위한 환경을 준비해준다. 모든 빈들을 스캔하고 애플리케이션 컨텍스트를 생성하여 테스트를 실행.
2. @Transactional
1) 개념
각각의 테스트를 실행할 때마다 트랜잭션을 시작하고 테스트가 끝나면 트랜잭션을 강제로 롤백한다. 따라서 테스트를 진행하면서 데이터베이스에 저장한 데이터가 테스트가 끝나면 롤백되므로 반복해서 테스트를 진행할 수 있다.
3. @Autowired
1) 개념
의존 관계를 자동으로 주입해준다
4. @Test
1) 개념
테스트를 수행하는 메소드를 의미. 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을 원칙으로 @Test마다 객체를 생성.
5. @WebMvcTest
1) 개념
스프링은 특정 부분만 테스트할 수 있는 슬라이스 테스트(SliceTest)를 위한 어노테이션들을 제공하는데, 이는 컨트롤러를 테스트할 수 있는 환경을 준비한다. 애플리케이션 컨텍스트를 만들 때 컨트롤러와 연관된 빈들만을 제한적으로 찾아서 등록.
2) 특징
- @SpringBootTest와 같이 사용될 수 없다. 각자 서로의 MockMvc를 모킹하기 때문에 충돌이 발생하기 때문에.
6. @AutoConfigureMockMvc
1) 개념
2) 특징
- 테스트 대상이 아닌 @Service나 @Repository사 붙은 객체들도 모두 메모리에 올림
- 전체 애플리케이션 구성을 로드하고 MockMVC를 사용하려는 경우 @WebMvcTest보다 @AutoConfigureMockMvc와 결합된 @SpringBootTest를 고려해야 함 -> 단위테스트라기 보다는 전체 플로우를 테스트하는 것에 가까움
3) MockMvc
개념
컨트롤러를 테스트하고 싶을 때 실제 서버에 애플리케이션을 배포하지 않고 테스트용 MVC환경을 만들어서 요청, 전송, 응답기능을 확인할 수 있께 해주는 유틸리티 클래스
방법
@AutoConfigureMockMvc을 마킹하고 주입받으면 사용 가능
설정 메서드
- param / params : 쿼리 스트링 설정
- perform: HTTP 요청
- cookie : 쿠키 설정
- requestAttr : 요청 스코프 객체 설정
- sessionAttr : 세션 스코프 객체 설정
- content : 요청 본문 설정
- header / headers : 요청 헤더 설정
- contentType : 본문 타입 설정
검증 메서드
- status : 상태 코드 검증
- header : 응답 header 검증
- content : 응답 본문 검증
- cookie : 쿠키 상태 검증
- view : 컨트롤러가 반환한 뷰 이름 검증
- redirectedUrl(Pattern) : 리다이렉트 대상의 경로 검증
- model : 스프링 MVC 모델 상태 검증
- request : 세션 스코프, 비동기 처리, 요청 스코프 상태 검증
- forwardedUrl : 이동대상의 경로 검증
기타 메서드
- andDo() : print, log를 사용할 수 있는 메소드
- print() : 실행결과를 지정해준 대상으로 출력, default = System.out
- log() : 실행결과를 디버깅 레벨로 출력, 레벨은 org.springframework.test.web.servlet.result
'Spring > test' 카테고리의 다른 글
[테스트 코드] 테스트 코드 작성 문법 (0) | 2023.03.08 |
---|---|
[테스트 코드] 테스트 코드의 개념과 필요한 이유 (0) | 2023.03.08 |