스프링 버전 차이 때문에 생긴 에러이다.
스프링 관련 예제를 스프링 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>