[2019.04.06] SpringBootTest, SpringJpaTest
2019. 4. 6. 23:44ㆍ[개발] 기록
@SpringBootTest와 @DataJpaTest의 차이점
@SpringBootTest : 모든 Bean을 읽어들여서 테스트한다.
@DataJpaTest : @Entity, @Repositort 만 읽어들여서 테스트한다.
@Configuration, @Component, @Service 등 을 스캔을 하지 않는다.
데이터베이스를 인메모리 데이터 베이스를 이용하여 테스트를 수행한다.
덕분에 DataJpaTest의 로딩 속도가 더 빠르다.
+) @Transactional 이 포함되어 있으므로 굳이 달아줄 필요가 없다.
+) @SpringBootApplication 클래스안에 @Autowired 하는 객체가 있으면 DataJpaTest로 돌렸을 때 제대로 주입이 안되는 경우가 있다. 이럴땐 @Autowired(required=false)를 해주면 된다.
이외의 더 많은 Test의 영역을 정해주는 Annotation
Annotation | 특징 | 비고 |
@JdbcTest | 인메모리 데이터베이스로 테스트된다. 테스트를 위한 JdbcTemplate이 생성된다. | @Autowired private JdbcTemplate jdbcTemplate; |
@JsonTest | Jackson serializer 와 deserializer의 테스트 | @Autowired private JacksonTester jacksonTester; |
@DataMongoTest | 인메모리 데이터베이스로 테스트된다. Entity 대신 Document를 스캔한다. mongoTemplate이 생성된다. | @Autowired private MongoTemplate mongoTemplate; |
@RestClientTest | 클라이언트에서 서버와 Rest 통신을 확인할 때 유용하다. | |
@WebMvcTest | 원래는 MockMVC 관련해서 설정 어노테이션을 일일히 달아줘야했는데 한번에 해준다. | @Autowired private MockMVC mockMVC; |
출처 1 : https://hyper-cube.io/2017/08/06/spring-boot-test-1/
출처 2 : https://hyper-cube.io/2017/08/10/spring-boot-test-2/
결국 테스트할 때 로딩 속도를 빨리하기 위해서 쓸데없는 Bean 스캔을 줄이도록 영역을 정해주는 Annotation 들이다.
'[개발] 기록' 카테고리의 다른 글
Lombok을 사용할 때 List 타입 멤버변수 오버라이딩 (0) | 2019.04.16 |
---|---|
Jackson Error - InvalidDefinitionException: Direct self-reference leading to cycle (0) | 2019.04.16 |
[2019.04.06] Mock, MockBean (0) | 2019.04.06 |
[2019.03.30] dSYM, Source map (0) | 2019.03.30 |
[2019.03.18] 용어 정리 (0) | 2019.03.18 |