目录

遇到的问题:

原因:

解决方案:

Spring Boot 2.2 之前的测试类

Spring Boot 2.2 之后的测试类

Spring Boot 2.2 之前的 pom.xml

Spring Boot 2.2 之后的 pom.xml

官方文档说明

链接:

部分翻译:


遇到的问题:

使用 maven 创建了一个 parent 项目 A,其 pom.xml 继承 parent 为 spring-boot-starter-parent 2.1.10。

然后创建 module 项目 B,使用 spring initializr 构建项目,用的是 IDEA,当时没有选 Spring Boot 版本,结果默认使用的是 2.2.1。 创建成功之后的pom.xml如下 Spring Boot 2.2 之后的 pom.xml。

修改项目 B 的 pom 的 parent 为 A,结果测试类报错,找不到 org.junit.jupiter.api.Test

原因:

spring boot 2.2 之前使用的是 Junit4 而后续的使用的是Junit5,导致缺少包。

解决方案:

将父工程 A 的 parent 升级为 spring-boot-starter-parent 2.2.1,如果使用了依赖管理 dependencyManagement,需要把里面的 spring-boot-starter-test 版本号改为 与 parent 对应的 2.2.1。

当然,也可以直接指定 module工程B 的 spring-boot-starter-test 版本号改为 与 parent 对应的 2.2.1

Spring Boot 2.2 前后区别

Spring Boot 2.2 之前的测试类

package com.example.demo1;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest
public class Demo1ApplicationTests {@Testpublic void contextLoads() {}}

Spring Boot 2.2 之后的测试类

package com.example.demo;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class DemoApplicationTests {@Testvoid contextLoads() {}}

Spring Boot 2.2 之前的 pom.xml

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.10.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

Spring Boot 2.2 之后的 pom.xml

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions>
</dependency>

官方文档说明

链接:

https://docs.spring.io/spring-boot/docs/2.2.x/reference/html/spring-boot-features.html#boot-features-testing

部分翻译:

详细见上述链接

25.测试

Spring Boot提供了许多实用程序和注释,可以在测试应用程序时提供帮助。测试支持由两个模块提供:spring-boot-test包含核心项,并spring-boot-test-autoconfigure支持测试的自动配置。大多数开发人员都使用spring-boot-starter-test“入门程序”,该程序同时导入Spring Boot测试模块以及JUnit Jupiter,AssertJ,Hamcrest和许多其他有用的库。

启动程序还带来了老式引擎,因此您可以运行JUnit 4和JUnit 5测试。如果已将测试迁移到JUnit 5,则应排除对JUnit 4的支持,如以下示例所示:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions>
</dependency>

25.3。测试Spring Boot应用程序

Spring Boot应用程序是Spring ApplicationContext,因此除了对普通Spring上下文进行正常测试以外,无需执行任何其他特殊操作即可对其进行测试。

默认情况下,Spring Boot的外部属性,日志记录和其他功能仅在SpringApplication用于创建时才安装在上下文中。

Spring Boot提供了一个@SpringBootTest注释,spring-test @ContextConfiguration当您需要Spring Boot功能时,它可以用作标准注释的替代。注释通过创建ApplicationContext在测试中使用过的来SpringApplication起作用。除了@SpringBootTest提供许多其他注释外,还用于测试应用程序的更多特定部分。

如果使用的是JUnit 4,请不要忘记也将其添加@RunWith(SpringRunner.class)到测试中,否则注释将被忽略。如果您使用的是JUnit 5,则无需添加等价项@ExtendWith(SpringExtension.class)@SpringBootTest并且其他@…Test注释已经在其中进行了注释。

Spring Boot 2.2.x Junit4 升级为Junit5 后的变化、对比 找不到 org.junit.jupiter.api.Test相关推荐

  1. 麻了!Spring Boot 从 2.2.5 升级到 2.7.2 之后,一堆BUG

    这篇文章分享一下Spring Boot 升级到2.7的踩坑总结,还是挺全面的,希望对大家有所帮助~ 说明 2.7.2为2.x的最后一个稳定版本. 3开始最低要求 Java 17,所以暂时不到3.x. ...

  2. android6变化,一次尝鲜体验 关于一加6升级Android P后的变化

    原标题:一次尝鲜体验 关于一加6升级Android P后的变化 2018年8月7日,谷歌终于推出了Android P的第一个正式版本,这个系统一经发布便可谓是万众瞩目,因为这个系统所具有的诸多亮点足够 ...

  3. 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点...

    一.前提 升级前 => 升级后 Spring Boot 1.5.x => Spring Boot 2.0.4.RELEASE Spring Cloud Edgware SR3 => ...

  4. spring boot 使用maven和fat jar/war运行应用程序的对比

    文章目录 简介 Spring Boot Maven Plugin 使用Maven命令来运行应用程序 作为fat jar/war包运行应用程序 详解War文件 详解jar文件 如何选择 使用maven和 ...

  5. Spring boot admin 升级到2.3.1 遇到的问题总结

    目录 问题1 :注册到Spring boot admin 服务器上的项目,在项目关闭或者重启的时候不会自动注销. 问题2 :如果spring boot admin server 已经是spring w ...

  6. Spring Boot 2.3.5.RELEASE正式升级,SpringBoot新版本发布

    版本升级 spring boot 正式版本于今日升级到2.3.5.Release. 应用案例 微服务:https://github.com/matevip/matecloud SpringBoot也同 ...

  7. Spring Boot 2 入门笔记(尚硅谷)

    目录 一.基础入门 1.Spring与Spring boot 1)Spring 生态圈 2)Spring boot 3)Spring boot2 4)SpringBoot优点: 5)缺点 2.时代背景 ...

  8. [初学Spring Boot](2):单元测试报错:org.junit.runners.model.InvalidTestClassError:Invalid test class

    本来: 是建项目时自动生成的测试类,结果还是报错了.大无语事件. 就是IDEA自建测试时导错包了. 注释掉的时原来自导的,换成短的就好了. 经查证,长的是升级版,junit5,spring boot版 ...

  9. Spring Boot 集成 JUnit5,更优雅单元测试!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://mp.weixin.qq.com/s/2Kdu-nYLF55Ui9A1-ybgFw 为什么使用JUnit5 J ...

  10. RabbitMQ(九):RabbitMQ 延迟队列,消息延迟推送(Spring boot 版)

    应用场景 目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如: 淘宝七天自动确认收货.在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持 ...

最新文章

  1. UNIX系统编程(一)
  2. 我们的故事(八)-----仲夏夜之梦
  3. matlab ,python,c++关于格式化输出数字的表达
  4. 软件工程---07.设计与实现
  5. java开发学生管理系统,看这篇足矣了!
  6. 图像分割总体介绍——深度AI科普团队
  7. PLSQL Developer学习笔记
  8. VGG Pool5 Feature Map特征提取
  9. 不同类型特征变量之间相关性分析
  10. 西门子万人裁员背后的思考 :有车有房的中年人最好使唤
  11. pptswot分析图怎么做_SWOT分析图-PPT模板.pptx
  12. hibernate的关联映射 (员工管理)
  13. 关于jupyer中,文件夹所在位置如何查询
  14. 【Python数据清洗】pivot_table 与 pivot 的区别——手把手系列
  15. rk3399 usbwifi Miracast调试
  16. 北京搬家货运公司汇总
  17. 微博抽奖贴为什么到时间了不开奖_按这6个步骤做抽奖,微博涨粉翻10倍都不止...
  18. 从Excel到数据分析师,我到底经历了什么?
  19. 16个工程必备的JavaScript代码片段
  20. D3.js实现人物关系图谱有移动、拖拽、放大功能

热门文章

  1. OOAD 3 迭代、进化和敏捷(Iterative,Evolutionary,and Agile)
  2. Unity动画系统学习方向
  3. Java小项目——家庭记账软件
  4. 华硕路由域名访问_“618” WiFi6 路由器选购推荐清单_路由器
  5. 杨百翰大学计算机科学专业,杨百翰大学研究生什么专业好
  6. 微信红包测试思维导图
  7. Unity中零基础实现人物控制摇杆(下篇)
  8. 从零开始制作点餐Android app(一)
  9. 由 Apache Kylin 组建的 Kyligence 公司获得数百万美元的天使轮投资
  10. 银行卡号码的校验规则(Luhn算法/模10算法)