728x90
- 실제 데이터가 DB에 잘 들어가고 접속이 잘 되는지 테스트를 진행해야 된다.
- 이전에는 순수한 JAVA Code를 실행하는 단위 테스트였다.
- 단위 테스트 설계를 잘할 경우 통합 테스트보다 좋은 성능으로 빠르게 테스트를 완료할 수 있지만 통합 테스트가 필요한 시기가 존재하므로 통합테스트 진행법도 알아야 한다.
@Transactional//Test를 실행할때 Transactional어노테이션을 달게 되면 DB에 실제 넣지 않고 Test를 실행한뒤, 롤백해준다.
@SpringBootTest//스프링 테스트를 위한 어노테이션
class MemberServiceIntegrationTest {
//테스트 케이스같은 경우 다른데에서 가져다 쓰는것이 아니기 때문에 굳이 생성자를 통한 주입을 받을 필요는 없다
@Autowired MemberService memberService;
@Autowired MemberRepository memberRepository;
@Test
void 회원가입() {
Member member = new Member();
member.setName("spring");
//@Transactional 해당 어노테이션 때문에 테스트 케이스를 계속 실행 하여도 문제 없다
Long saveId = memberService.join(member);
Member findMember = memberService.findOne(saveId).get();
assertThat(member.getName()).isEqualTo(findMember.getName());
}
@Test
public void 중복_회원_예외(){
//given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
memberService.join(member1);
IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원 입니다.");
}
}
- @SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행한다.
- @Transactional : 테스트 케이스에 이 애노테이션이 있으면, 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백한다. 이렇게 하면 DB에 데이터가 남지 않으므로 다음 테스트에 영향을 주지 않는다
728x90
'스프링 입문' 카테고리의 다른 글
| Ch06. 스프링 DB 접근 기술 - JPA (0) | 2021.12.01 |
|---|---|
| Ch06. 스프링 DB 접근 기술 - 스프링 JdbcTemplate (0) | 2021.12.01 |
| Ch06. 스프링 DB 접근 기술 - 순수 JDBC (0) | 2021.12.01 |
| Ch06. 스프링 DB 접근 기술 - H2 데이터베이스 설치 (0) | 2021.12.01 |
| Ch05. 회원 관리 예제 (웹 MVC 개발회원 웹 기능) - 회원 웹 기능 - 조회 (0) | 2021.11.28 |