Spring 입문3 -회원 관리 예제 (tistory.com)
- MemoryMemberRepositoryTest와 MemberServiceTest는 스프링과 전혀 관련없는, 순수 자바코드 테스트 (즉, 단위테스트. 순수 자바코드로 최소한의 단위로 하는 테스트)
- 현재(스프링 부트 DB연결)는 순수 자바코드로 테스트 불가능 →스프링 컨테이너와 DB까지 연결한 통합 테스트를 만들어보자
- 회원 서비스 스프링 통합 테스트
- @SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행한다.
- @Transactional : 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백(DB에 저장된 데이터를 삭제)한다. 이렇게 하면 DB에 데이터가 남지 않으므로 다음 테스트에 영향을 주지 않는다. → 반복 가능한 테스트 지원
- @Autowired : 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계 주입 →@BeforeEach로 각 테스트 실행 전마다 의존관계 넣어줄 필요 없어짐
@SpringBootTest //스프링 컨테이너와 테스트를 함께 실행
@Transactional //테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백한다
class MemberServiceIntegrationTest {
//@Autowired로 의존관계 넣어주기 (DI)
@Autowired MemberService memberService;
@Autowired MemberRepository memberRepository;
@Test
void join() throws Exception{
//Given
Member member = new Member();
member.setName("hello");
//When
Long saveId = memberService.join(member);
//Then
Member findMember = memberService.findOne(saveId).get();
//assertThat(member.getName()).isEqualTo(findMember.getName());
assertEquals(member.getName(), findMember.getName());
}
@Test
void 중복_회원_예외() throws Exception {
//Given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
//When
memberService.join(member1);
IllegalStateException e =assertThrows(
IllegalStateException.class, () -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
}
}
728x90
반응형
'Spring Tutorial' 카테고리의 다른 글
[Spring 입문 13] 스프링 DB 접근 기술: JPA (0) | 2024.08.04 |
---|---|
[Spring 입문 12] 스프링 DB 접근 기술: 스프링 JdbcTemplate (0) | 2024.08.03 |
[Spring 입문 8] 웹 MVC 개발: 회원 웹 기능- 조회 (0) | 2024.07.27 |
[Spring 입문7] 웹 MVC 개발: 회원 웹 기능- 등록 (0) | 2024.07.21 |
[Spring 입문 3] 회원 관리 예제 - 백엔드 개발 (0) | 2024.07.14 |