통합테스트 : DB까지 연결해서 하는 테스트
단위테스트 : 순수한 자바코드로 최소한의 단위로 테스트
대부분 단위테스트가 더 좋은 테스트 ( 보통은 스프링 컨테이너 안올리는 단위테스트가 더 좋음 )

테스트는 항상 가장 쉬운 방법으로 ( 필드 주입 ) , SpringConfig에서 스프링컨테이너에 올려둔다.
통합테스트 할 때는 스프링이 뜸, 테스트 끝나면 스프링 내려감
테스트는 반복가능해야함.

그러나 회원가입() 한번 실행하면 "spring"이 DB에 들어가 있다. -> 다시 실행시 fail뜸
해결법
1) AfterEach 작성
2) 테스트 끝나고 롤백(db에 데이터 반영(commit)X)
DB는 기본적으로 트랜젝션.
DB에 insert query하고 commit해야 DB에 반영됨. ( 평소는 autocommit 모드 )
-> @Transactional 를 테스트케이스에 달면 테스트를 실행할 때 트렌젝션을 먼저 실행하고 테스트 끝나면 롤백

@SpringBootTest : 스프링컨테이너와 테스트를함께실행한다.
@Transactional : 테스트 케이스에 이 어노테이션이 있으면, 테스트시작 전에트랜잭션을 시작하고,
테스트완료 후에 항상롤백한다. 이렇게하면 DB에 데이터가남지않으므로다음테스트에영향을주지
않는다.
출처 : 인프런 김영한님의 강의를 수강 후 정리한 내용입니다.
꾸준히 다시보자.
1. 220712
2. 220731
'Java, Spring > 스프링 입문' 카테고리의 다른 글
JPA (0) | 2022.07.10 |
---|---|
회원 웹 기능 - 홈 화면 추가, 등록 (0) | 2022.07.10 |
컴포넌트 스캔과 자동 의존관계 설정, 자바코드로 직접 스프링 빈 등록하기 (0) | 2022.07.10 |
회원 서비스 테스트 (0) | 2022.07.10 |
회원 서비스개발 (0) | 2022.07.05 |