이제까지 진행했던 테스트는 스프링 컨테이너의 간섭을 받지 않고 순수 자바 코드로만 동작하는 '단일 테스트'였다.

스프링 컨테이너와 함께 테스트를 실행하는 '통합 테스트'도 가능하다.

 

@SpringBootTest 를 통해 간단하게 처리 가능.

 

스프링 통합 테스트는 단일 테스트에 비해 시간이 오래 걸린다. 테스트 케이스가 많아질수록 그 차이는 커진다. 따라서 스프링에 의존하지 않는 단일 테스트 케이스를 만드는 능력이 중요하다.

 

스프링 통합 테스트를 진행할 때 @Transactional 을 통해 @AfterEach를 대체할 수 있다.

스프링과 직접 연동되는 테스트이기 때문에 테스트로 인해 디비에 데이터가 저장된 후 다시 테스트를 돌렸을 때 데이터 중복에 의해 오류가 발생할 수 있다. (사실 이건 굳이 통합 테스트가 아니어도 마찬가지)

 

@Transactional 은 각 테스트 케이스가 실행하기 전 트랜잭션을 생성하고 테스트가 종료되면 해당 트랜잭션을 롤백함으로써 데이터 @AfterEach의 기능을 대신할 수 있다. 

 

 

 

출처 : www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

+ Recent posts