Darren's Devlog

[에러잡기 ep.3] JUnit 테스트 통과가 안됩니다ㅠㅠ ft.TDD 본문

Spring/에러해결

[에러잡기 ep.3] JUnit 테스트 통과가 안됩니다ㅠㅠ ft.TDD

Darren Gwon 2022. 9. 9. 16:14
반응형

네이버 블로그에서 티스토리로 이전하는 중입니다.

https://blog.naver.com/darren_gwon/222703634581

 

 

episode 3.
강의 똑같이 따라한거 같은데 JUnit테스트 통과가 안됩니다 ㅠㅠ

 

질문자분께서 JUnit을 활용한 TDD(Test Driven Development) 파트 강의를

제대로 따라한 거 같은데 테스트 통과가 안된다는 질문을 해주셨습니다.


원인파악


테스트 코드를 보아하니, 참조변수 boardDao의 null 체크를 하여

bean주입이 제대로 되었는지 안되었는지를 테스트하는 작업인 것을 확인할 수 있었습니다.

가장 먼저, @Autowired가 제대로 작동하여 bean 주입이 되는지 확인해야할 것 같아

BoardDaoImpl 클래스에 @Repository 애너테이션을 적용시켜

Component로 등록하셨는지부터 파악을 했습니다.

 

음... BoardDaoImpl클래스를 확인해보니 @Repository 애너테이션도 이미 제대로 추가해주셨네요.

 

혹시라도 테스트 환경에서 사용하는 root-context.xml에

component-scan 태그을 추가하지 않으셨나 싶어 확인해봤으나

태그도 제대로 추가하신 상태였습니다.

최후의 수단으로, 로그를 직접 확인하는 수 밖에 없겠다 싶어,

보내주셨던 첫번째 사진에 살짝 나온 로그 내용을 보았습니다.

 

Failed to load ApplicationContext!!

애초에 ApplicationContext에서 에러가 발생하니 bean이 주입됐을리가 없었겠네요.

이걸로 일단 원인은 파악 완료 했습니다.


Failed to load ApplicationContext 원인 찾기


ApplicationContext가 왜 load가 안됐는지 알아보기 위해 에러 로그를 전부 요청드렸습니다.

Error creating bean with name 'sqlSessionFactory'

Failed to parse mapping resource: 'file[~~/mapper/boardMapper.xml]'

Error parsing Mapper XML. The XML location is 'file[~~/mapper/boardMapper.xml]'

위 세 줄의 로그를 통해서, MyBatis 세팅 중 boardMapper.xml 에서 문제가 발생하여

sqlSessionFactory의 bean생성이 실패했다는 것을 발견하였습니다.


문제 해결


boardMapper.xml에 문제가 있는 것 같다고 설명을 드렸습니다!

 

boardMapper.xml를 수정하신 후에는 정상적으로 테스트 성공하셨다고 하네요 ㅎㅎㅎ

먼저 에러로그부터 파악 했으면 더 간단했을텐데, 스무고개처럼 너무 돌아갔네요.

그래도 특정 에러가 났을 때, 연관된 원인들을 하나 둘 씩 떠올릴 수 있게 됐다는 것에

큰 의미를 두며 이번 에피소드도 마무리 하겠습니다!

 

에러가 발생한다면 로그부터 체크 할 것!

by. Darren(?)

반응형
Comments