我正在为Spring应用程序编写一些JUnits,其中使用的Spring版本是
<spring.version>3.2.8.RELEASE</spring.version>
依赖关系定义为
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
然后在我的JUnit
测试中我使用注释
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:config/test-application-context-datasource.xml")
当我尝试执行测试用例时,它无法初始化,即它甚至没有进入@Before
方法并抛出异常:
java.lang.NoClassDefFoundError: org/springframework/core/type/AnnotatedTypeMetadata
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:118)
AnnotatedTypeMetadata仅在春季版本4.10.0之后可用,我相信,但由于我没有在我的应用程序中使用它,我的spring-test和spring-core的版本是相同的,为什么这甚至被引用。< / p>
有什么想法吗?
答案 0 :(得分:1)
您显然在类路径上有各种Spring JAR的不兼容版本。
要确定类路径中存在哪些不兼容的版本(即3.2.8.RELEASE
除外),请在项目的文件夹中执行mvn dependency:tree
。
然后确保您避免在类路径上使用不兼容的版本 - 例如,通过将排除添加到Maven POM中,以获取将不需要的版本作为传递依赖项引入的任何依赖项。