springboot升级后mvn test找不到单元测试

Springboot版本从2.1.11.RELEASE升级到2.4.3之后发现执行 mvn test找不到单元测试执行了。

之前了解过某个 2.x 版本后的spring-boot-test默认使用Junit5作为默认测试执行器,而现有代码中的测试使用的是Junit4进行编写,怀疑是此原因造成。

junit5相关文档中找到了相关描述,意思是说,想要 maven-surefire-plugin执行 Junit 的测试,在依赖中必须要声明一个TestEngine的实现:

<!-- Junit5 配置实现 -->
<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.2</version>
        </plugin>
    </plugins>
</build>
<!-- ... -->
<dependencies>
    <!-- ... -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.7.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.7.1</version>
        <scope>test</scope>
    </dependency>
    <!-- ... -->
</dependencies>

同时也支持 Junit4 的测试用例,需要增加 Junit4 和 Junit Vintage依赖,可以同时执行 Junit4 和 Junit5 的测试用例

<!-- ... -->
<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.2</version>
        </plugin>
    </plugins>
</build>
<!-- ... -->
<dependencies>
    <!-- ... -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>5.7.1</version>
        <scope>test</scope>
    </dependency>
    <!-- ... -->
</dependencies>
<!-- ... -->

增加依赖后,再执行mvn test测试用例的确可以正常运行了。

### 解决 Spring Boot 测试依赖不到的方法 当遇到 Maven 项目的 `pom.xml` 中测试依赖无法到的情况时,通常是因为本地仓库缺少必要的依赖项或是网络连接问题导致下载失败。以下是几种可能的原因及解决方案: #### 1. 检查父级 POM 配置 确保项目中的父级 POM 正确无误地指定了 Spring Boot Starter Parent 版本。这有助于统一管理和简化子模块的依赖管理。 ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> ``` 上述配置定义了一个全局性的版本控制机制,使得所有子模块能够自动继承这些设置[^1]。 #### 2. 添加显式的测试依赖声明 即使某些情况下不需要指定版本号,为了确保兼容性和稳定性,在开发环境中建议明确写出所需的具体版本。特别是针对测试框架如 JUnit 或 Mockito 等工具来说更为重要。 ```xml <dependencies> ... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ... </dependencies> ``` 此部分展示了如何通过 `<scope>` 属性来限定该依赖仅用于测试环境,并且推荐始终保留这一属性以提高清晰度和性能效率[^2]。 #### 3. 清理并重新加载 Maven 缓存 如果之前尝试过更新但未成功,则可能是由于缓存数据损坏所致。此时可以通过执行如下命令清除旧有的元数据后再重试同步操作: ```bash mvn clean install -U ``` 参数 `-U` 强制刷新远程资源库的信息,从而强制 Maven 下载最新的快照版或发布版构件及其描述符文件[^4]。 #### 4. 修改 IDE 设置指向正确的 Maven 安装路径 有时因为不同操作系统下默认存储位置差异较大而导致冲突现象发生。因此应当确认当前使用的集成开发环境 (IDE) 是否正确关联到了预期的目标 Maven 实例上。例如,在 IntelliJ IDEA 中可通过调整 Settings/Preferences -> Build, Execution, Deployment -> Build Tools -> Maven 来完成相应更改[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值