스프링 통합테스트 만들기
지금까지는 데이터를 메모리(Map)로 만들어서 사용했기 때문에 순수한 java코드로만 테스트코드를 짜서 진행했지만 DB에 연결을 해서 데이터를 관리한다면 테스트때도 DB에서 데이터를 받아오기 위해 연결을 해야하고 따라서 스프링을 돌리면서 테스트를 진행해야합니다✨
이렇게 통합적으로 테스트를 진행하기위해서는 test클래스에 @SpringBootTest와 @Transactional 어노테이션을 붙여주면 됩니다. 그리고 BeforeEach와 AfterEach를 모두 지워주고 아래 코드를 추가해줍니다
@SpringBootTest // 스프링 컨테이너와 테스트를 함께 실행함
@Transactional // test시작할때는 넣어놓고 끝나면 rollback해서 반영하지 않음
class MemberServiceIntergrationTest {
@Autowired MemberService memberService; // field DI
@Autowired MemberRepository memberRepository;
....
....
}
BeforeEach와 AfterEach를 모두 지워주는 이유
@BeforeEach: 의존성 부여 -> 스프링에서 @Autowired로 부여해줌, DI중에 가장 간단한 field DI로 작성
@AfterEach: 매 test후 store clear -> @Transactional이 rollback을 통해 대신해줌
@Transactional: 각테스트 진행 후에 rollback해줌 -> Test클래스에 붙었을 때만 이런 기능을 제공하는 것임!!!