스프링 통합 테스트
- @Test 어노테이션은 스프링과 관련 없는 작업코드만을 테스트할 때 사용함.
- DB 연결 정보같이 스프링 부트와 연동할 필요가 있는 코드의 경우 @SpringBootTest와 @Transactional 어노테이션을 test용 클래스에 붙인다.
- 통합 테스트를 할 경우 service나 repository는 직접 객체를 생성하는게 아니라 스프링 컨테이너로부터 받아와야 한다. 따라서 @Autowired 어노테이션을 붙인다.
- DB에는 Transaction이라는 개념이 있다. query를 날린 후 commit을 해야 DB에 반영이된다(따로 commit을 안하면 AutoCommit 하는 중임). 즉, 롤백을 시키면 DB에는 해당 데이터가 쌓이지 않는다는 뜻이다. @Transacional은 이를 각 테스트마다 적용시켜 할때 일일이 넣은 데이터를 지울 필요가 없게 해준다.
- @Commit을 붙이면 그래도 commit 해준다.