관리 메뉴

개발하는 동그리

[Test] Slice Test (Data Access 계층) 본문

IT 정보/Spring

[Test] Slice Test (Data Access 계층)

개발하는 동그리 2022. 8. 18. 14:18
반응형

Data Access 계층 테스트 기본 구조

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;

import static org.junit.jupiter.api.Assertions.*;

@DataJpaTest  // (1) MemberRepository 기능을 정상적으로 사용하기 위한 Configuration 등록
              // Transactional 애너테이션을 포함 따라서 1개 테스트가 종료되면 저장된 데이터는 rollback 처리
              // 각 테스트마다 초기화가 유지된다. 
public class MemberRepositoryTest {
    @Autowired
    private MemberRepository memberRepository; 

    @Test
    public void saveMemberTest() {
        // given  (2) 테스트용 회원 데이터 
        Member member = new Member();
        member.setEmail("moodeary@gmail.com");
        member.setName("춘식");
        member.setPhone("010-7177-0677");

        // when  (3) 회원 저장
        Member savedMember = memberRepository.save(member);

        // then 
        assertNotNull(savedMember); // (4) 저장된 회원이 Null인지 검증
        assertTrue(member.getEmail().equals(savedMember.getEmail()));
        assertTrue(member.getName().equals(savedMember.getName()));
        assertTrue(member.getPhone().equals(savedMember.getPhone()));
    }
    
    @Test
    public void findByEmailTest() {
        // given (1) 테스트용 회원 데이터 
         Member member = new Member();
        member.setEmail("moodeary@gmail.com");
        member.setName("춘식");
        member.setPhone("010-7177-0677");

        // when 
        memberRepository.save(member);  // (2) 회원 저장
        // (3) Email 주소를 통해 회원 조회
        Optional<Member> findMember = memberRepository.findByEmail(member.getEmail()); 
        

		// (4) 검증 (Assertion)
	    // then
        // (4-1) 조회된 회원정보가 Null 인지 검증
        assertTrue(findMember.isPresent()); 
        // (4-2) 이메일 주소 일치 여부 검증
        assertTrue(findMember.get().getEmail().equals(member.getEmail())); 
    }
    
}
반응형

'IT 정보 > Spring' 카테고리의 다른 글

@RestControllerAdvice & @ControllerAdvice  (0) 2024.12.12
OSI 7계층 / CIA / RSA / RFC 규칙 / JWT  (4) 2022.08.29
[Test] Slice Test (API 계층)  (2) 2022.08.18
[Spring] application.yml 설정  (1) 2022.08.18
[Spring] build.gradle 설정  (0) 2022.08.18