升级Spring Boot至2.7.1时出现org.springframework.boot.test包不存在错误求助
Spring Boot 2.7.1升级后出现
package org.springframework.boot.test does not exist错误 我们正在将Spring Boot版本升级至2.7.1,构建代码时遇到了package org.springframework.boot.test does not exist错误。
依赖片段
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.1</version> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> </exclusion> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> </exclusion> <exclusion> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> </exclusion> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.17.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.17.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>2.17.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency>
测试类示例
我们有多个使用@ContextConfiguration的测试类,以下是其中一个:
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = { ServicesConfig.class, RepositoryConfig.class, PropertySources.class, JmxConfig.class, UtilConfig.class, AsyncConfig.class, TenantIdentityConfig.class }) @DirtiesContext public abstract class AbstractAppInitializer { }
补充说明:pom.xml中已定义spring-boot-starter-web依赖(内容与上述依赖片段中一致)。
解决方法
- 校验测试类路径:确保所有引用
org.springframework.boot.test包的测试类都放在src/test/java目录下。因为spring-boot-starter-test的依赖范围是test,只有测试目录内的代码才能访问该依赖。 - 刷新Maven依赖:执行命令强制更新依赖,确保包正确下载:
mvn clean install -U - 排查依赖冲突:运行
mvn dependency:tree查看依赖树,确认是否存在依赖冲突或意外排除了spring-boot-starter-test的相关组件,如有冲突需调整排除规则或指定版本。 - 替换过时测试注解:Spring Boot 2.7.x中
@RunWith(SpringJUnit4ClassRunner.class)已过时,建议替换为@ExtendWith(SpringExtension.class),适配新版本测试框架:@ExtendWith(SpringExtension.class) @WebAppConfiguration @ContextConfiguration(classes = { ServicesConfig.class, RepositoryConfig.class, PropertySources.class, JmxConfig.class, UtilConfig.class, AsyncConfig.class, TenantIdentityConfig.class }) @DirtiesContext public abstract class AbstractAppInitializer { }
内容的提问来源于stack exchange,提问作者Anish Sharma
相关产品推荐
相关产品推荐

