728x90
반응형
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()));
}
}
728x90
반응형
'IT 정보 > Test' 카테고리의 다른 글
[Test] Test Code (mock vs 실제 DB + 트랜젝션) (0) | 2025.03.28 |
---|---|
[Test] Slice Test (API 계층) (2) | 2022.08.18 |
[Test] Mockito (14) | 2022.07.14 |
[Test] TDD (Test-Driven Development) (14) | 2022.07.14 |
[Test] JUnit Test 기능 (18) | 2022.07.12 |