Spring Junit 실행 시 Mapper 인식하지 못함

Spring Junit 실행 시 Mapper 인식하지 못함

DAO를 테스트하기 위해서 DAO를 주입받아서 테스트코드를 실행하였으나 주입되지 않은것을 확인할수있다.

원인은 Context에 등록한 설정이 되어 있지않기 때문이다.

아래 annotaion들을 설정해주자.

@RunWith 설정

@ContextConfiguration 설정

설정이 완료되고 다시 테스트를 실행해보았지만 이번에는 Mapper를 찾지 못하는 아래와같은 에러가 계속발생하였다.

에러 : java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for

검색해보니, 대부분의 개발자분들은 아래 설정을 확인하라고한다.

1. mapper id가 다를경우

- mapper파일(MyBatis의 쿼리문을 등록한 XML파일)에

mapper파일에 직접 접근하는 java파일(DAO나 service)에 적어놓은 id값이 다른 경우

2. Parameter와 bean의 필드명이 틀린 경우

3. mapper파일(MyBatis의 쿼리문을 등록한 XML파일)에 정의된 네임스페이스(namespace)와

mapper파일에 직접 접근하는 java파일(DAO나 service)에서 호출하는 네임스페이스(namespace)가 다를 경우

4. MyBatis config파일에 mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우

5. mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우

하지만, 계속 확인을해도 위 문제와는 별개인듯하다.

왜냐면, 실제로 서버를 돌리고 API를 호출하면 문제가없는데 테스트 Junit만 실행하면 Mapper를 못찾는다고한다...

우여곡절끝에 확인한 결과 datasource-context.xml에 mapper 경로 설정부분에

와일드카드가 원인이였다...

위 빨간색 와일드카드 부분에 실제경로를 넣고 하니 된다.

왜 와일드카드 부분을 제외하면 되는지 찾아봐도 나오지않는다. 추측하기도 힘들다.

from http://datajoy.tistory.com/135 by ccl(A) rewrite - 2020-03-24 22:20:28

댓글

이 블로그의 인기 게시물

[Linux] 파일 로그 보기(tail)

[샤니마스 SPRING PARTY2020] THE IDOLM @ STER SHINY COLORS SPRING...

2020 LCK 롤챔스 Spring 경기 재개 및 일정