You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring多模块项目从4.3.2.RELEASE升级到5.2.20.RELEASE后测试报错求助

解决Spring 5.2.20.RELEASE测试时SpringJUnit4ClassRunner初始化失败问题

你遇到的Could not initialize class org.springframework.test.context.junit4.SpringJUnit4ClassRunner错误,核心原因是依赖版本不兼容以及重复依赖导致的类加载冲突,以下是具体修复方案:

1. 清理重复的Spring Test依赖

你的pom中重复声明了spring-test依赖,保留其中一个并设置scope=test(仅测试阶段生效):

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.version.d}</version>
    <scope>test</scope>
</dependency>

2. 升级JUnit到兼容版本

Spring 5.2.x要求JUnit 4.12及以上版本,替换原有的JUnit依赖:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

3. 升级PowerMock到兼容版本

PowerMock 1.5.1与Spring 5.x存在兼容性问题,需升级到2.0.0+版本,同时注意与Mockito/EasyMock的版本匹配(示例使用PowerMock+Mockito组合,若需保留EasyMock需同步升级EasyMock到4.0+):

<!-- PowerMock 依赖 -->
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito2</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>
<!-- 对应版本的 Mockito -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>3.5.13</version>
    <scope>test</scope>
</dependency>

注:若坚持使用EasyMock,替换powermock-api-mockito2为powermock-api-easymock,并升级EasyMock到4.3版本。

4. 同步兼容Spring Data JPA版本

Spring 5.2.20.RELEASE对应Spring Data JPA 2.2.x版本,需确保${spring.data.jpa.version}设置为2.2.10.RELEASE:

<properties>
    <spring.data.jpa.version>2.2.10.RELEASE</spring.data.jpa.version>
</properties>

5. 升级其他老旧依赖

  • SLF4J:Spring 5.x要求SLF4J 1.7+,替换slf4j-api版本:
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.36</version>
    </dependency>
    
  • Hibernate Validator:旧版本4.2.0.Final与Spring 5.x不兼容,升级到6.0.x:
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.22.Final</version>
    </dependency>
    
  • AspectJ:AspectJ 1.7.0与Spring 5.x的AOP模块不兼容,升级到1.9.6:
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjtools</artifactId>
        <version>1.9.6</version>
    </dependency>
    

最后验证

执行以下命令清理缓存并重新运行测试:

mvn clean test

内容的提问来源于stack exchange,提问作者Manohar Nr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:50:37