728x90
- (Spring Boot) 회원 가입 테스트
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class MemberServiceTest {
@Autowired MemberService memberService;
@Autowired MemberRepository memberRepository;
@Test
public void 회원가입() throws Exception {
//Given
Member member = new Member();
member.setName("kim");
//When
Long saveId = memberService.join(member);
//Then
assertEquals(member, memberRepository.findOne(saveId)); //setName과 DB에서 가져온 값이 같으면 ok
}
@Test(expected = IllegalStateException.class)
public void 중복_회원_예외() throws Exception {
//Given
Member member1 = new Member();
member1.setName("kim");
Member member2 = new Member();
member2.setName("kim");
//When
memberService.join(member1);
memberService.join(member2); //(같은 이름을 저장했으므로)예외가 발생해야 한다.
//Then
fail("예외가 발생.");
}
}
- 어노테이션 정의
- @RunWith(SpringRunner.class) : 스프링과 테스트 통합
- @SpringBootTest : 스프링 부트 띄우고 테스트(이게 없으면 @Autowired 다 실패)
- @Transactional : 반복 가능한 테스트 지원, 각각의 테스트를 실행할 때마다 트랜잭션을 시작하고 테스트가 끝나면 트랜잭션을 강제로 롤백 (이 어노테이션이 테스트 케이스에서 사용될 때만 롤백)
- 단위 테스트의 의미 → 개발단계 초기에 문제를 발견
- 예) 기존 A의 기능에 기능 B를 추가한다고 하자. B를 완성하여 서버를 실행시켰는데, 갑자기 A에서 오류가 발생한 상황
- 이 때, A, B에 대한 단위테스트가 있다면 각각의 오류에 대해서 구분지어서 대응을 할 수 있게 됨
728x90
'Spring' 카테고리의 다른 글
스프링 시큐리티(Spring Security) 설정 (0) | 2022.02.17 |
---|---|
Spring 필드 주입 vs 생성자 주입(win) (0) | 2022.02.15 |
순수 Java에서 Spring으로의 첫 전환! (0) | 2022.02.15 |
(Spring DI) Appconfig를 활용한 가격정책을 DI로 구현 (0) | 2022.02.15 |
스프링 부트 Test 예제(feat. assertj) (0) | 2022.02.14 |