작성
·
51
0
테스트 코드 작성에서 오류가 뜨는데 어떤 오륜지 잘 모르겠습니다.
beforeAll() 함수에서는 Assertions 임포트 잘 되는거같은데 테스트 시작이 안되네요..
답변 4
0
0
0
안녕하세요 정보근입니다:)
올려주신 이미지를 보면 테스트는 정상 실행이 됐고,
테스트 결과를 검증하는 부분에서 오류가 발생했네요.
findAll() 테스트 코드와 로그를 순서대로 보시면,
먼저 experienceRepository.findAll()로 Experience 엔티티를 조회하는 쿼리가 실행되고,
Experience 개수는 2개로 로깅이 됐습니다.
그리고 그 바로 아래 쿼리는 experience.details를 호출하는 시점에 실행되는데요.
그러나 details 리스트가 비어있어서 크기는 0이고,
첫번째 테스트 데이터 세팅 과정에서 설정해준 exprience의 details 크기(=title)와 달라서
Assertions에서 검증에 실패했습니다.
예상되는 원인 중 가장 가능성 높은 것은
Experience 엔티티와 ExperienceDetail 엔티티의 CascadeType 설정입니다.
Experience 엔티티의 @OneToMany 어노테이션에
cascade = [CascadeType.ALL]로 속성이 지정되었는지 확인해주세요.
이와 관련한 내용은 "[실습] 엔티티 개발 - 연관관계 있음"의 수업 노트에 보충 설명되어 있습니다.
혹시 이 방법으로 문제 해결이 안 된다면
리포지토리 주소를 같이 올려주시면 원인 확인에 도움이 될 것 같습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. LIMC님이 경험하신 테스트 오류에 대한 문제를 해결할 수 있는 방법을 안내드리겠습니다.
LIMC님께서 작성 중이신 테스트에서 발생하는 AssertionError
는 주로 데이터베이스에 저장된 데이터와 테스트 코드에서 설정한 예상 결과 간의 불일치로 인해 발생합니다. 이 경우, 테스트에서 예상하는 데이터의 크기와 데이터베이스에서 조회된 실제 데이터의 크기가 일치하지 않기 때문입니다.
테스트 데이터 확인:
beforeAll()
메서드에서 테스트 데이터가 제대로 삽입되었는지 확인하십시오. 데이터가 삽입되지 않았거나 잘못 삽입된 경우 assertThat
메서드에서 기대 값과 실제 값이 일치하지 않아 오류가 발생할 수 있습니다.연관관계 / Cascade 설정 문제:
CascadeType
설정이 잘못되어 데이터가 제대로 삽입되지 않는 경우가 많습니다.애노테이션 설정 재확인:
@DataJpaTest
애노테이션이 테스트 클래스에 적용되어 있는지 확인하십시오. 이 애노테이션은 JPA 관련 컴포넌트(Repository 등)들을 테스트하는 데 매우 유용합니다.Entity
클래스의 필드 및 메서드에 올바른 Hibernate 애노테이션들이 적용되어 있는지 재확인하세요.테스트 오류를 해결하는 과정에서 추가로 문의 사항이 있으시면 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
원인 확인하셨다니 다행입니다!