테스트 요구사항

회원 기능 테스트

그냥 Command + Shift + T로 테스트를 만듭니다.

회원가입 테스트 코드

라이브 템플릿 (Live Template)

만드는 법 자세히

package jpabook.jpashop.service;

import jpabook.jpashop.domain.Member;
import jpabook.jpashop.repository.MemberRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import static org.junit.Assert.*;

//...1
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional //...2
public class MemberServiceTest {

		//...3
    @Autowired MemberService memberService;
    @Autowired MemberRepository memberRepository;

    @Test
    public void 회원가입() throws Exception {
				//...4
        //given
        Member member = new Member();
        member.setName("kim");

        //when
        Long saveId = memberService.join(member);

        //then
        assertEquals(member, memberRepository.findOne(saveId)); //...5
    }

    @Test
    public void 중복_회원_예외() throws Exception {
        //given

        //when

        //then
    }
}
  1. 순수한 단위테스트를 만들게 아니라 JPA가 실제 DB까지 도는게 중요하기 때문에 메모리 모드로 DB까지 엮어서 테스트를 할 것입니다. 완전히 스프링이랑 integration해서 테스트를 합니다.

    @RunWith(SpringRunner.class)와 @SpringBootTest가 있어야 스프링 부트와 integration해서 스프링부트를 실제로 올려서 테스트를 할 수 있습니다.

    자세히

  2. 데이터를 변경하기 위한 @Transactional

  3. 테스트 케이스이므로 다른 애들이 참조할게 없으니 간단하게 필드 주입을 해도 됩니다.

    자세히

  4. given/when/then

  5. assertEquals(member, memberRepository.findOne(saveId));

실행을 해보면 성공합니다.