Spring jar版弹簧测试

时间:2014-12-05 07:43:35

标签: java spring maven junit spring-test

我正在为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>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您显然在类路径上有各种Spring JAR的不兼容版本。

要确定类路径中存在哪些不兼容的版本(即3.2.8.RELEASE除外),请在项目的文件夹中执行mvn dependency:tree

然后确保您避免在类路径上使用不兼容的版本 - 例如,通过将排除添加到Maven POM中,以获取将不需要的版本作为传递依赖项引入的任何依赖项。