스프링 통합 테스트

Haechan Kim·2022년 7월 9일
0

Spring

목록 보기
9/68

DataSource는 db 커넥션 획득할 때 사용하는 객체.
스프링 부트는 db 커넥션 정보 바탕으로 DataSource 생성하고 스프링 빈으로 만들어 둔다.
그래야 DI 받을 수 있음.

MemoryMemberRepository, JdbcMemberRepository는 구현체.

  • 개방 폐쇄 원칙 (OCP, Open-Closed Principle)
    확장에는 열려있고 수정, 변경에는 닫혀있음.

  • DI를 사용하면 기존 코드는 손대지 않고 설정만으로 구현 클래스 변경할 수 있음.

-> SpringConfig.java

  • 스프링을 사용해 테스트를 해보자.
@SpringBootTest
@Transactional // db에 테스트로 데이터 넣고 테스트 끝나면 다 롤백. 회원가입 테스트 다시해도 오류 x
class MemberServiceIntegrationTest {

    // 테스트는 제일 끝단이므로 생성자 인젝션 안하고 편하게 필드 인젝션 해도 됨.
    @Autowired MemberService memberService;
    // 테스트 멤버 레파지토리는 서비스에서 쓰는 레파지토리와 다른 객체. (new로 새로 만듬)
    // MemoryMemberRepository memberRepository = new MemoryMemberRepository(); // service만으론 클리어 못하므로 리파지토리 가져옴
    @Autowired MemberRepository memberRepository;

    @Test
    void 회원가입() { // 테스트는 한글로 써도 됨
        // given 뭔가 주어졌고
        Member member = new Member();
        member.setName("spring");

        // when 이것을 실행 했을 때
        Long saveId = memberService.join(member);

        // then 결과
        Member findMember = memberService.findOne(saveId).get();
        assertThat(member.getName()).isEqualTo(findMember.getName()); // alt+enter static import
    }
}

0개의 댓글