@RequiredArgsConstructor
@Repository
public class MemberRepository implements MemberDao {
private final EntityManager em;
@Override
public void findMember(Member member) {
em.persist(member);
}
...
}
@SpringBootTest
@Transactional(readOnly = true)
class MemberRepositoryTest {
@Autowired
private MemberRepository memberRepository;
@Test
@Transactional
public void 멤버등록() throws Exception{
//given
Member member = new Member("M123456789", "choi1234", "maxx","1234");
//when
memberRepository.saveMember(member);
//then
Assertions.assertThat(member).isEqualTo(memberRepository.findMemberByID("choi1234").get());
}
...
}
JPA를 사용할 경우 @DataJpaTest Annotation을 쓸 수 있음
DB와의 연결을 직접 확인하는 것이 의미 있는 일이므로 Mock을 쓰지 않고 진짜 연결을 테스트
그런데
나의 경우에는 @DataJpaTest을 쓰고 @Autowired에서 MemberRepository의 bean을 찾을 수 없다는 오류가 나왔다.
이유는
나의 MemberRepository가 Spring Data JPA Repository가 아니여서 bean으로 스캔이 안된 것 이였다.
테스트를 하기 위한 방법은 2가지