본문 바로가기

Spring

[Spring] [Test] [Error] java.lang.NoSuchMethodError: 'org.springframework.util.ReflectionUtils$MethodFilter

스프링 버전 차이 때문에 생긴 에러이다.

 

스프링 관련 예제를 스프링 4로 진행 중이였는데, test 코드 작성할 때 @ExtendWith(SpringExtension.class)의 SpringExtension.class가 없어서, 다음과 같이 스프링5의 의존성을 추가했었다.

<!-- spring4에 없는 SpringExtension.class 위해 추가 -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-test</artifactId>
  <version>5.3.23</version>
  <scope>test</scope>
</dependency>

 

그리고 test를 돌려봤는데, 다음과 같은 에러가 발생했다. 스프링 버전의 문제였다.

Test ignored.

java.lang.NoSuchMethodError: 'org.springframework.util.ReflectionUtils$MethodFilter org.springframework.util.ReflectionUtils$MethodFilter.and(org.springframework.util.ReflectionUtils$MethodFilter)'

	at org.springframework.test.context.junit.jupiter.SpringExtension.<clinit>(SpringExtension.java:104)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	...

 

스프링 4를 5로 바꿔서 진행하기로 결정하고, pom.xml의 properties에 변수로 따로 빼둔 스프링 버전을 4에서 5로 바꾸어주었다.

<properties>
  <spring.version>5.3.23</spring.version>