테스트 중 발생한 ParameterMapping 에러 해결 과정

신수정·2024년 3월 29일

JUnit을 이용해 서비스의 기능을 테스트하던 도중 ParameterMapping 에러에 부딪혔습니다. 특히, MyBatis에서 SQL 실행 시 memberId 매개변수가 null로 인식되어 "SQL 부적절한 열 유형"이라는 에러가 발생했습니다. 이 포스트에서는 해당 문제의 원인 파악부터 해결 과정까지를 공유하고자 합니다.

문제 상황

테스트 실행 시 다음과 같은 에러 메시지가 발생했습니다 : ParameterMapping{property='memberId', mode=IN, javaType=class java.lang.Long, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}

에러 메시지 분석을 통해 memberId가 null로 넘어가고 있음을 확인할 수 있었습니다. 이로 인해 MyBatis가 SQL 쿼리를 정상적으로 실행하지 못하고, "SQL 부적절한 열 유형" 에러를 발생시키고 있었습니다.

원인 분석

테스트 코드를 다시 검토하던 중, @BeforeEach 어노테이션이 적용된 setup 메서드에서 MemberDTO 객체의 memberId를 설정하지 않은 채 테스트를 준비하고 있음을 발견했습니다. 이로 인해 SQL 쿼리 실행 시 필요한 memberId 값이 null로 전달되었고, 결국 쿼리 실행 실패로 이어진 것입니다.

해결 과정

문제의 원인을 파악한 후, @BeforeEach 어노테이션이 적용된 setup 메서드 내에 다음 코드를 추가하여 문제를 해결했습니다.

memberDTO 객체에 memberId 값을 명시적으로 설정함으로써, 테스트 실행 시 필요한 memberId 값을 정상적으로 전달할 수 있게 되었고, 이후 테스트는 성공적으로 통과하였습니다.

결론

이번 문제 해결 과정을 통해 테스트 코드 작성 시 사전 조건 설정의 중요성을 다시 한번 깨닫게 되었습니다. 테스트 환경에서 객체의 초기 상태를 명확히 정의하지 않으면 예상치 못한 에러에 직면할 수 있음을 알게 되었고, 이는 실제 애플리케이션 개발에 있어서도 마찬가지로 적용될 수 있는 중요한 교훈입니다.
profile
안녕하세요:)

0개의 댓글