首页 > 其他分享 >JUnit 5 注解总结与解析

JUnit 5 注解总结与解析

时间:2024-02-07 14:31:37浏览次数:387  
标签:继承 此类 测试 注解 解析 方法 JUnit

前言

大家好,我是chowley,通过前篇的JUnit实践,我对这个框架产生了好奇,除了断言判断,它还有哪些用处呢?下面来总结一下它的常见注解及作用。

正文

在Java单元测试中,JUnit是一种常用的测试框架,它提供了丰富的注解用于标识测试方法、设置测试环境以及控制测试执行流程。除了用于断言判断之外,JUnit的注解还有许多其他用途。

JUnit Jupiter支持以下注解来配置测试并扩展框架。

除非另有说明,否则所有核心注解都位于junit-jupiter-api模块的org.junit.jupiter.api包中。

注解 描述
@Test 标识一个方法为测试方法。与JUnit 4的@Test注解不同,此注解不声明任何属性,因为JUnit Jupiter中的测试扩展是基于它们自己的专用注解操作的。此类方法会被继承,除非它们被覆盖。
@ParameterizedTest 标识一个方法为参数化测试。此类方法会被继承,除非它们被覆盖。
@RepeatedTest 标识一个方法为重复测试的测试模板。此类方法会被继承,除非它们被覆盖。
@TestFactory 标识一个方法为动态测试的测试工厂。此类方法会被继承,除非它们被覆盖。
@TestTemplate 标识一个方法为测试用例的模板,设计用于根据注册的提供程序返回的调用上下文次数多次调用。此类方法会被继承,除非它们被覆盖。
@TestClassOrder 用于配置被注解测试类中的@Nested测试类的测试类执行顺序。此类注解会被继承。
@TestMethodOrder 用于配置被注解测试类中的测试方法执行顺序;类似于JUnit 4的@FixMethodOrder。此类注解会被继承。
@TestInstance 用于配置被注解测试类的测试实例生命周期。此类注解会被继承。
@DisplayName 为测试类或测试方法声明自定义显示名称。此类注解不会被继承。
@DisplayNameGeneration 为测试类声明自定义显示名称生成器。此类注解会被继承。
@BeforeEach 标识应在当前类中的每个@Test、@RepeatedTest、@ParameterizedTest或@TestFactory方法之前执行的方法;类似于JUnit 4的@Before。此类方法会被继承,除非它们被覆盖或替代(即,仅基于签名替换,而不考虑Java的可见性规则)。
@AfterEach 标识应在当前类中的每个@Test、@RepeatedTest、@ParameterizedTest或@TestFactory方法之后执行的方法;类似于JUnit 4的@After。此类方法会被继承,除非它们被覆盖或替代(即,仅基于签名替换,而不考虑Java的可见性规则)。
@BeforeAll 标识应在当前类中的所有@Test、@RepeatedTest、@ParameterizedTest和@TestFactory方法之前执行的方法;类似于JUnit 4的@BeforeClass。此类方法会被继承,除非它们被隐藏、覆盖或替代(即,仅基于签名替换,而不考虑Java的可见性规则),并且必须是静态的,除非使用了“每类”测试实例生命周期。
@AfterAll 标识应在当前类中的所有@Test、@RepeatedTest、@ParameterizedTest和@TestFactory方法之后执行的方法;类似于JUnit 4的@AfterClass。此类方法会被继承,除非它们被隐藏、覆盖或替代(即,仅基于签名替换,而不考虑Java的可见性规则),并且必须是静态的,除非使用了“每类”测试实例生命周期。
@Nested 标识一个非静态嵌套测试类。在Java 8到Java 15中,除非使用“每类”测试实例生命周期,否则不能直接在@Nested测试类中使用@BeforeAll和@AfterAll方法。从Java 16开始,@BeforeAll和@AfterAll方法可以声明为@Nested测试类中的静态方法,并且可以使用任何测试实例生命周期模式。此类注解不会被继承。
@Tag 用于在类级别或方法级别声明标记以过滤测试;类似于TestNG中的测试组或JUnit 4中的Categories。此类注解在类级别继承,但在方法级别不继承。
@Disabled 用于禁用测试类或测试方法;类似于JUnit 4的@Ignore。此类注解不会被继承。
@Timeout 用于如果执行超过给定持续时间,则失败测试、测试工厂、测试模板或生命周期方法。此类注解会被继承。
@ExtendWith 用于声明性地注册扩展。此类注解会被继承。
@RegisterExtension 用于通过字段编程方式注册扩展。除非被隐藏,否则此类字段会被继承。
@TempDir 用于通过字段注入或参数注入在生命周期方法或测试方法中提供临时目录;位于org.junit.jupiter.api.io包中。

通过合理使用这些注解,可以更好地控制测试的行为,并且提高代码的可测试性和可维护性。

好了,以上就是本文的全部内容,如有问题欢迎留言讨论。

本人正在组建测试开发方向的交流社区,如果您对软件质量管理方面感兴趣,欢迎私信我了解。

我是chowley,一个专注互联网技术和软件质量保障领域的博主,我们下次再见!

欢迎点赞、评论、收藏,it's important for me.

欢迎点赞、评论、收藏,it's important for me.

欢迎点赞、评论、收藏,it's important for me.

标签:继承,此类,测试,注解,解析,方法,JUnit
From: https://blog.51cto.com/chowley/9637967

相关文章

  • JUnit实践教程——Java的单元测试框架
    前言大家好,我是chowley,最近在学单元测试框架——JUnit,写个博客记录一下!在软件开发中,单元测试是确保代码质量和稳定性的重要手段之一。JUnit作为Java领域最流行的单元测试框架,为开发人员提供了简单、灵活和强大的测试工具。JUnit1.简介JUnit是一个开源的Java单元测试框架,最初由......
  • Java之UDP,TCP的详细解析
     练习四:文件名重复publicclassUUIDTest{publicstaticvoidmain(String[]args){Stringstr=UUID.randomUUID().toString().replace("-","");System.out.println(str);//9f15b8c356c54f55bfcb0ee3023fce8a}}```publicclassClient{public......
  • Java 数学运算与条件语句全解析
    JavaMathJava的Math类拥有许多方法,允许您在数字上执行数学任务。常用方法:Math.max(x,y):找到x和y的最大值Math.min(x,y):找到x和y的最小值Math.sqrt(x):返回x的平方根Math.abs(x):返回x的绝对值Math.random():返回一个介于0.0和1.0之间的随机......
  • Java 数学运算与条件语句全解析
    JavaMathJava的Math类拥有许多方法,允许您在数字上执行数学任务。常用方法:Math.max(x,y):找到x和y的最大值Math.min(x,y):找到x和y的最小值Math.sqrt(x):返回x的平方根Math.abs(x):返回x的绝对值Math.random():返回一个介于0.0和1.0之间的随......
  • 【Spring】- 自动注入注解
    【@Autowired】冷知识:@AutowiredprivateMovieCatalog[]movieCatalogs;//根据类型注入全部的bean对象数组@AutowiredprivateSet<MovieCatalog>movieCatalogs;//根据类型注入全部的bean对象集合@AutowiredprivateMap<String,MovieCatalog>movieCatalogs;//根据类型注......
  • 前后端跨域竟然不需要加注解!
    众所周知前后端跨域一直是让人头疼的问题。那什么是跨域呢?出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策......
  • 浅谈甲类生产厂房应急照明和疏散指示系统的设计问题解析
    摘要:文章结合电气设计项目实践经验,分析了甲类生产厂房消防应急照明和疏散指示系统设计中照明灯和标志灯的设置、疏散走道和疏散通道的规划、集中控制型系统类型的选择、电压等级的选择中存在的问题,总结了相关经验,可以为同类工程提供参考。关键词:甲类生产厂房;消防应急照明和疏散指示......
  • neteq的peak detector解析
    neteq中的峰值检测原理如下:a)当interval_arrival_iat_packet超过target_level+2||interval_arrival_iat_packet>2*target_level的时候,认为这是一个峰值点b)记录该峰值点的高度(iat_packet)和该峰值点离上一个峰值点的间隔(period),然后放入记录数组boolDelayPe......
  • Java-10注解与反射
    注解注解(Annotation)也被称为元数据(Metadata),用于修饰包、方法、属性、构造器、局部变量等数据信息。注解不影响程序逻辑,但注解可以被编译或运行。在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE中注解占据了更重要的角色,例如用来配置应用程序的......
  • 解析与编辑器漏洞
    一、解析漏洞需要vulhub环境。点击查看代码编译:sudodocker-composebuild启动:sudodocker-composeup-d关闭:sudodocker-composedown1、IIS6vulhub里面没有IIS的靶场,可以用课程资料的03serverr1版本,用户名密码:administrator/123456。解析漏洞介绍1)当建立.asa......