import static org.assertj.core.api.Assertions.assertThat;
// ... 생략
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
void 유저_저장_테스트() {
// given
User user = User.builder()
.name("테스트")
.email("test@gmail.com")
.age(22)
.build();
// when
userRepository.save(user);
// then
assertThat(userRepository.findByName(user.getName()).isPresent()).isEqualTo(true);
}
}
JPA 관련이 아닌 의존성 주입이라면 @ExtendWith(SpringExtension.class)가 필요하다.
(JUnit5 : @ExtendWith, JUnit4 : @RunWith)
JUnit5에서는 @RunWith 대신에 @ExtendWith(SpringExtend.class)을 사용한다.
@SpringBootTest를 사용하면 모든 application context를 다 로딩하게 되는데
@ExtendWith(SpringExtend.class)를 사용한다면,
@Autowired, @MockBean에 해당되는 것들에만 application context를 로딩하게 된다.
이는 Service 테스트에서 정리하겠다.
MockBean은 @DataJpaTest에서도 테스트 통과된다.