单元测试系列:一、了解spring boot单元测试

news/2024/11/24 20:13:20/

一、java 单元测试框架

java当前主流的测试框架有两个:JUnit、TestNG。

1、两者相同点

  • 使用annotation,且大部分annotation相同。
  • 都可以进行单元测试(Unit test)。
  • 都是针对Java测试的工具。

2、两者不同点

  • JUnit只能进行单元测试,TestNG可以进行单元测试,功能测试,端到端测试,集成测试等,主要是因为testNG存在depends可以进行测试用例的组合;
  • TestNG需要一个额外的xml配置文件,配置测试的class、method甚至package。
  • TestNG的运行方式更加灵活:命令行、ant和IDE,JUnit只能使用IDE。TestNG有自己的命令行执行方式。
  • TestNG的annotation更加丰富和易懂,比如@ExpectedExceptions、@DataProvider等。
  • 测试套件运行失败,JUnit 会重新运行整个测试套件。TestNG运行失败时,会创建一个XML文件说明失败的测试,利用这个文件执行程序,就不会重复运行已经成功的测试。

二、JUnit框架

大部分开发人员,一般使用的应该是Junit,主要使用两个版本:JUnit4与JUnit5。JUnit5的目标是采用Java8的编程风格并且比JUnit4更加健壮和灵活。

1、两者注解对比

特性JUnit4JUnit5
声明一个测试方法@Test@Test
在当前类的所有测试方法执行前要执行的方法@BeforeClass@BeforeAll
在当前类的所有测试方法执行后要执行的方法@AfterClass@AfterAll
每个测试方法执行前要执行的方法@Before@BeforeEach
每个测试方法执行后要执行的方法@After@AfterEach
忽略某个测试方法或测试类@Ignore@Disabled
动态测试用例生成工厂无此特性@TestFactory
嵌套测试无此特性@Nested
标记与过滤@Category@Tag
注册定制扩展点无此特性@ExtendWith

2、两者对JDK的要求

JUnit4需要Java5或以上版本。
JUnit5需要Java8或以上版本。

3、两者架构不同

JUnit4把所有的代码都打包到一个jar包。
JUnit5由3个子模块构成:JUnit Platform、JUnit Jupiter和JUnit Vintage。

4、两者覆盖场景不同

JUnit5能支持静态方法、Final方法、私有方法的Mock等等。

三、Spring Boot对JUnit框架的集成

1、Spring Boot 集成JUnit

Spring Boot项目需要单元测试,只需要引入spring-boot-starter-test即可。

2、Spring Boot 集成JUnit的对应版本关系

Springboot >=2.2.X 支持版本为JUnit5;

Springboot <2.2.X   支持版本为JUnit4。

3、JUnit5对JUnit4的兼容方式

<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>

依赖排除说明:

(1) 这个是JUnit5中为了支持使用JUint4所做的一个过度,也就是说,你只需要在你的JUnit4旧项目中添加这个依赖, 就能完美过渡,而不用修改之前代码。

(2) 如果要在大于springboot 2.2.x版本使用junit4,上述的依赖排除删掉,还需手动引入junit4的jar包因为2.2.x只有junit5依赖。

4、spring-boot-starter-test的依赖库

1JUnit 5:兼容 JUnit 4,Java 应用程序单元测试的事实标准
2Spring Test 和 SpringBootTest:对Spring Boot应用程序的公共和集成测试支持
3AssertJ:流式断言库
4Hamcrest:匹配对象库
5Mockito:Java 模拟框架
6JSONassert:JSON 断言库
7JsonPath:JSON XPath

参考资料

https://www.cnblogs.com/mzc1997/p/14306538.html

JUnit4和JUnit5的主要区别_junit4和junit5的区别_pilaf1990的博客-CSDN博客


http://www.ppmy.cn/news/145530.html

相关文章

什么耳机打游戏好用又不贵?蓝牙游戏耳机推荐

近几年的科技发展可以说是进步飞快了&#xff0c;近几年短视频给人们带来了快时代的发展&#xff0c;除了短视频以外&#xff0c;游戏也发展的飞快。这些东西已经逐渐贴近我们的生活离不开了。随着这些的发展&#xff0c;蓝牙耳机作为外设也被拉上一起飞速发展。许多人手机外放…

到底SLAM是什么,又有哪些好处?

前两天AI君的一个朋友跑来找我&#xff0c;说他最近想买个扫地机器人&#xff0c;看到很多高端品牌的产品介绍里都会提到一个名词&#xff0c;SLAM。 &#xff08;图片来自 戴森360eye 售价6440&#xff09; &#xff08;图片来自 irobot960 售价4999&#xff09; 而且他还发现…

手机摄像头的组成结构和工作原理

手机摄像头的组成结构和工作原理 手机摄像头由&#xff1a;PCB板、镜头、固定器和滤色片、DSP(CCD用)、传感器等部件组成。 工作原理为&#xff1a;拍摄景物通过镜头&#xff0c;将生成的光学图像投射到传感器上&#xff0c;然后光学图像被转换成电信号&#xff0c;电信号再经…

拍视频到底用手机还是相机好?

关注并星标“高级农民工” 回复“视频”可获取视频剪辑软件和教程 拍视频到底用手机还是相机好&#xff0c;或者说拍视频要用相机才能拍好么&#xff1f; 这是一个朋友昨天问我的问题&#xff0c;我想这也是很多刚开始拍视频的朋友想知道的&#xff0c;我当初也经历了很长一段时…

爬取五大平台621款手机,告诉你双十一在哪买最便宜!

↑关注置顶~ 有趣的不像个技术号 今晚0点&#xff0c;相约剁手 大家好&#xff0c;我是朱小五 明天就是双十一了&#xff0c;看了看自己手里的卡的像IE浏览器的手机&#xff0c;感觉可能等不到5G普及了。 我&#xff01;要&#xff01;换&#xff01;手&#xff01;机&#xff…

买手机就要买大容量的以及为什么手机内存满了之后会变卡

我现在手里正在用的这个是 IPhone XR&#xff0c;2019 年还是 2018 年买的&#xff0c;我记得买的时候已经上市一段时间了。这个是苹果第一款双卡双待的手机&#xff0c;到现在用了三四年了。 都说苹果的手机可以用很多年还很流畅&#xff0c;而安卓的手机一般一两年就卡的没法…

小白也能看懂的手机配置攻略

该文是参考了大佬的文章整理编写的&#xff0c;增加小白对手机配置的理解&#xff0c;希望对你有所帮助 如何查看手机配置&#xff1f; 手机配置一般在&#xff1a;设置->关于手机里查看即可 下面是我手机的配置信息 性能 客观来说手机最重要的配置&#xff0c;也是对使…

为什么我不建议你在当前购买 5G 手机

首发于公众号&#xff1a;BaronTalk&#xff0c;欢迎关注 每年的八九月份都是各大厂商发布年自己旗舰机的时候&#xff0c;最近 vivo、oppo、小米、华为、苹果接连发布了自己的年度旗舰&#xff0c;这当中除了苹果&#xff0c;其它厂商均发布了 5G 版本手机。恰逢国庆&#xff…