Junit5单元测试框架原理和实践

简介: Junit5单元测试框架原理和实践

一、JUnit5理论

1.Junit5介绍

Junit5由以下3部分组成:

  1. JUnit Platform是基于JVM的运行测试的基础框架在,它定义了开发运行在这个测试框架上的TestEngine API。此外该平台提供了一个控制台启动器,可以从命令行启动平台,可以为Gradle和 Maven构建插件,同时提供基于JUnit 4的Runner。
  2. JUnit Jupiter是在JUnit 5中编写测试和扩展的新编程模型和扩展模型的组合.Jupiter子项目提供了一个TestEngine在平台上运行基于Jupiter的测试。
  3. JUnit Vintage提供了一个TestEngine在平台上运行基于JUnit 3和JUnit 4的测试。

9D312E29-A949-4352-9C32-A39FBF022F7C

2.常用注解

07D5C05B-204F-4297-AE29-E8C4D8147C32

3.断言方法

常用断言 Assertions

  1. assertEquals 断言预期值和实际值相等
  2. assertAll 分组断言,执行其中包含的所有断言
  3. assertArrayEquals 断言预期数组和实际数组相等
  4. assertFalse 断言条件为假
  5. assertNotNull 断言不为空
  6. assertSame 断言两个对象相等
  7. assertTimeout 断言超时
  8. fail 使单元测试失败

二、JUnit5结合Springboot实践

1.pom依赖

采用Springboot2.7.x 版本结合Junit进行验证,在这个版本中默认依赖的就是Junit5。添加pom依赖时将junit-vintage-engine加入到exclusion中,是为了排除Junit4 API被误引入。

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

2.IDEA中自动生成单元测试

在IDEA中右键方法,选择Generate选项,即可自动生成单元测试类和方法。

132E4117-ADB3-49A9-85CB-56236DDD1973

33E5BE81-CFF0-466F-87AE-D748E10BBCA4

3.测试类中注解的使用

针对Junit5,只需要加上注解:@SpringBootTest,他的作用是加载ApplicationContext容器。

@SpringBootTest

注意:如果使用的是Junit4,则还需要加上注解:@RunWith(SpringRunner.class),他的作用是启动测试器,保障Junit4的@Test注解能在ApplicationContext容器中生效。

@RunWith(SpringRunner.class)

参考资料

  1. 单元测试 - Junit5 详解:https://www.pdai.tech/md/develop/ut/dev-ut-x-junit5.html
  2. 【SpringBoot深入浅出系列】SpringBoot之集成JUnit5进行单元测试:https://bbs.huaweicloud.com/blogs/349189
  3. Spring Boot 集成 JUnit5,更优雅单元测试!:https://cloud.tencent.com/developer/article/2271888?areaSource=&traceId=
  4. Junit5 官网:https://junit.org/junit5/?spm=a2c6h.12873639.article-detail.5.3f0c1fdajVdpUK
  5. Springboot 单元测试 @SpringBootTest 与 RunWith:https://blog.csdn.net/howeres/article/details/108339464 (重点讲了@SpringBootTest和@RunWith 区别)
目录
相关文章
|
3天前
|
Web App开发 IDE 测试技术
【专栏】深入理解自动化测试框架 Selenium 的核心组件
【4月更文挑战第27天】Selenium 是一款广泛使用的自动化测试框架,核心组件包括 WebDriver(与浏览器交互的接口,支持多浏览器测试),IDE(可视化的测试脚本录制和编辑工具)和 Grid(分布式测试,实现多机器并行测试)。通过这些组件,开发者能高效、稳定地进行自动化测试,但需注意浏览器兼容性、脚本维护和性能问题。理解并掌握这些组件的使用,能提升测试效率和质量。
|
3天前
|
Web App开发 IDE 测试技术
深入理解自动化测试框架Selenium的设计与实践
【4月更文挑战第27天】在软件开发周期中,确保代码质量和功能正确性至关重要。随着敏捷开发的普及和持续集成/持续部署(CI/CD)的实践,自动化测试已成为现代开发工作流程的核心部分。本文将探讨一个广泛使用的开源自动化测试工具——Selenium,并剖析其设计原理、架构以及在实际中的应用。我们将通过具体案例分析,展示如何有效利用Selenium进行跨浏览器测试,并讨论在真实环境中可能遇到的挑战及解决方案。
|
10天前
|
Web App开发 JavaScript 前端开发
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第20天】 在软件测试领域,自动化测试已成为提升测试效率和确保产品质量的关键手段。Selenium作为一款广泛使用的开源自动化测试框架,其设计精巧且功能强大,为Web应用提供了一种灵活、高效的测试解决方案。本文将深入探讨Selenium的核心架构与实现细节,解析其如何通过模拟用户操作来执行测试用例,以及它如何适应不断变化的Web技术标准。通过对Selenium内部机制的剖析,旨在帮助测试工程师更好地掌握该工具,并在测试实践中发挥其最大效能。
|
12天前
|
监控 测试技术 数据安全/隐私保护
如何将代理IP集成到自动化测试框架中?
如何将代理IP集成到自动化测试框架中?
|
14天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
|
14天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
16天前
|
监控 测试技术 API
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第14天】在软件开发过程中,自动化测试是确保代码质量、减少人工重复劳动的关键步骤。Selenium作为一款广泛使用的自动化测试工具,提供了对多种浏览器和操作系统的支持。本文将探讨Selenium的核心组件及其架构设计,分析其如何通过WebDriver与浏览器交互,以及它如何支持多种编程语言进行脚本编写。同时,我们还将讨论Selenium Grid的作用以及它如何实现并行测试,以缩短测试周期并提高测试效率。
178 59
|
21天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
27 0
|
1月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
1月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。