반응형
표현방식
Given-When-Then
준비-실행-검증의 부분으로 나눠진 테스트 코드로 표현한다
@SpringBootTest
- 정의
통합 테스트를 제공하는 기본적인 스프링부트 테스트 어노테이션
- 의존성
- JUnit
- Spring & SpringBoot test
- AssertJ
- Hamcrest
- Mockito( Java Mocking framework )
- JSONassert
- JsonPath
Values
properties
테스트시 property를 주입할 수 있다. ( key = value 방식으로 )
classes
어플리케이션 컨텍스트에 로드할 클래스를 지정한다
따로 지정하지 않으면 @SpringBootConfiguration을 찾아 로드한다
webEnviroment
어플리케이션이 실행될때의 웹환경을 설정할 수 있다
@RunWith
JUnit에 내장된 러너를 사용하는 대신 어노테이션에 정의된 러너 클래스를 사용
@SpringBootTest 어노테이션을 사용하려면
JUnit의 SpringJUnit4ClassRunner 클래스를 상속받는 @RunWith(SpringRunner.class)를 꼭 붙여야한다
@ActiveProfile("")
프로파일 환경을 갖는다면, 해당 어노테이션 Value에 원하는 프로파일 환경값을 부여 가능하다
@WebMvcTest
- MVC를 위한 테스트, 웹에서 테스트하기 힘든 컨트롤러를 테스트하는데 적합하다.
- 시큐리티 혹은 필터까지 자동으로 테스트하며 수동으로 추가/삭제 가능
@DataJpaTest
- JPA 관련된 설정만 로드
- 인메모리 데이터베이스를 이용
@RestClientTest
- REST 관련 테스트를 도와주는 어노테이션
- REST 통신의 JSON 형식이 예상대로 응답을 반환하는지 등을 테스트
@JsonTest
JSON의 직렬화, 역직렬화를 수행하는 Json, Jackson의 테스트 제공
통합 테스트 환경 제공하기
@RunWith
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles
@Transactional // Test환경의 트랜잭션은 기본적으로 롤백
@Ignore // 자식클래스에서 상속시켜 동작시킬것이므로 Ignore
class IntegrationTest{
...
}
추가 내용
- 이번 포스트 내용은 사용법에 관한 것이 였지만, 테스트를 잘하기 위해서는 TDD 개발이론을 습득 해야 할 것 같다.
- 테스트를 잘하기 위해서는 클래스, 메서드등 기본 단위들이 각자의 관심사에 맞게 잘 나눠져 있어야 한다.
단일 책임 원칙 - 테스트하기 쉬운 코드가 잘짜여진 코드이다. ( 유지보수에 용이하다 )
728x90
반응형
'Tech > Spring' 카테고리의 다른 글
ResponseEntity vs @ResponseStatus (0) | 2021.09.12 |
---|---|
Spring Framework에서 자주 쓰는 어노테이션 개념 정리 (0) | 2021.08.08 |
CORS.. 많이 듣긴했는데... (0) | 2021.08.08 |
Spring Transactional 어디까지 알고있니? (3) | 2021.08.08 |
SpringBoot를 우아하게(?) 종료시켜보자 (1) | 2021.08.08 |