반응형
어노테이션
@DataJpaTest
@ActiveProfiles("test")
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@DataJpaTest
: JPA 관련 컴포넌트만 로드하여 테스트를 수행. 일반적으로 인메모리 데이터베이스를 사용하여 빠르게 테스트를 실행한다.@ActiveProfiles("test")
: 테스트 환경 설정@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
: 기본적으로@DataJpaTest
는 인메모리 데이터베이스를 사용.replace = AutoConfigureTestDatabase.Replace.NONE
를 해주면 실제 데이터베이스를 사용할 수 있다.
의존성 설정
private final UserRepository userRepository;
private OAuth2UserInfo userInfo;
private UserEntity user;
@Autowired
UserRepositoryTest(UserRepository userRepository) {
this.userRepository = userRepository;
}
userInfo
,user
: 테스트에 사용할 사용자 정보를 저장하는 객체
만약, @Autowired
어노테이션을 사용하여 생성자 주입을 한 이유가 잘 모르겠다면, 아래 게시글을 한 번 보고 오자.
https://myeongju00.tistory.com/89
테스트 기본 설정
@BeforeEach
void setUp() {
userInfo = new AppleOAuth2UserInfo(
"",
"test@test.com"
);
user = userInfo.createUserEntity();
userRepository.save(user);
}
@AfterEach
void tearDown() {
userRepository.deleteAll();
}
@BeforeEach
: 각 테스트가 실행되기 전에 실행된다. 주로 테스트에 필요한 데이터를 설정userInfo
와user
객체를 생성하고 저장@AfterEach
: 각 테스트가 실행된 후에 실행된다. 데이터베이스를 초기화하여 테스트 간의 독립성을 유지해준다.
사용자 저장 테스트
사용자가 데이터베이스에 제대로 저장되는지 테스트해보자.
@Test
@DisplayName("사용자 저장 테스트")
void save() {
UserEntity savedUser = userRepository.findByEmail(user.getEmail()).orElse(null);
assertThat(savedUser).isNotNull();
assertThat(savedUser.getEmail()).isEqualTo(userInfo.getEmail());
assertThat(savedUser.getStatus()).isEqualTo(Status.ACTIVE);
}
작동 방식
- 이메일로 저장된 사용자를 조회
- 사용자가 데이터베이스에 존재하는지 확인
- 저장된 사용자의 이메일이 원래 사용자의 이메일과 일치하는지 확인
- 저장된 사용자의 상태가
ACTIVE
인지 확인
사용자 조회 테스트
이메일을 통해 사용자를 정확히 조회할 수 있는지 테스트
@Test
@DisplayName("이메일로 사용자 조회 테스트")
void findByEmail() {
UserEntity findUser = userRepository.findByEmail(user.getEmail()).orElse(null);
assertThat(findUser).isNotNull();
assertThat(findUser.getEmail()).isEqualTo(user.getEmail());
}
작동 방식
- 이메일로 사용자를 조회
- 사용자가 데이터베이스에 존재하는지 확인
- 조회된 사용자의 이메일이 원래 사용자의 이메일과 일치하는지 확인
닉네임으로 사용자 조회 테스트
@Test
@DisplayName("닉네임으로 사용자 조회 테스트")
void findByNickname() {
UserEntity findUser = userRepository.findByNickname(user.getNickname()).orElse(null);
assertThat(findUser).isNotNull();
assertThat(findUser.getNickname()).isEqualTo(user.getNickname());
}
작동 방식
- 닉네임으로 사용자를 조회
- 사용자가 데이터베이스에 존재하는지 확인
- 조회된 사용자의 닉네임이 원래 사용자의 닉네임과 일치하는지 확인
이런식으로 테스트 코드를 짜면 된다 ! 코드를 돌려보면 아래와 같은 녹색 체크가 뜨면 성공 ~
반응형