Spring

(SpringBoot) test code

쿠카이든 2022. 2. 15. 11:43
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