JUnit注解,枚举

一、JUnit注解(Annotations)

JUnit 是 Java 中用于编写和运行单元测试的框架。JUnit 提供了许多注解,用于控制测试的执行顺序、测试生命周期、断言结果等。以下是一些常用的 JUnit 注解及其作用:

1. @Test

用于标记一个方法是测试方法。

@Test
public void testAddition() {int result = 1 + 1;assertEquals(2, result); // 断言结果是否为 2
}

2. @BeforeEach

在每个测试方法执行前运行。常用于初始化测试环境。

@BeforeEach
public void setup() {System.out.println("Before each test");
}
3. @AfterEach

在每个测试方法执行后运行。常用于清理测试环境。

@AfterEach
public void tearDown() {System.out.println("After each test");
}

4. @BeforeAll

在所有测试方法执行之前运行一次,通常用于静态初始化。

@BeforeAll
public static void init() {System.out.println("Before all tests");
}
5. @AfterAll

在所有测试方法执行之后运行一次,通常用于释放资源。

@AfterAll
public static void cleanup() {System.out.println("After all tests");
}
6. @Disabled

用于禁用某个测试方法或类。

@Test
@Disabled("Test is under development")
public void testDisabled() {// 该测试方法不会执行
}
7. @ParameterizedTest

用于参数化测试,允许为测试方法传递多组参数。

@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4})
public void testWithParameters(int number) {assertTrue(number > 0);
}
8. @Tag

用于对测试进行分类,可以通过标签选择性地运行测试。

@Test
@Tag("fast")
public void fastTest() {// 快速测试
}

枚举

1. 定义和使用
  • 枚举用于定义一组固定的常量集合。
  • 使用 enum 关键字定义枚举类型。
public enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}Day day = Day.MONDAY; // 使用枚举
2. 常用方法
  • values():获取所有枚举常量。
  • ordinal():返回枚举常量的序号(从0开始)。
  • valueOf(String name):根据名称获取枚举值。
for (Day d : Day.values()) {System.out.println(d + " at index " + d.ordinal());
}
Day friday = Day.valueOf("FRIDAY");
3. 带属性和方法

枚举可以包含字段和方法,每个常量可以有独特的属性和行为。

public enum TrafficLight {RED("Stop"), GREEN("Go"), YELLOW("Caution");private final String action;TrafficLight(String action) {this.action = action;}public String getAction() {return action;}
}
System.out.println(TrafficLight.RED.getAction()); // Stop
4. 用于switch语句
switch (day) {case MONDAY -> System.out.println("Start of the week");case FRIDAY -> System.out.println("End of the workweek");default -> System.out.println("Middle of the week");
}
5. 实现抽象方法

每个枚举常量可以实现抽象方法。

public enum Operation {ADD {public int apply(int a, int b) { return a + b; }},SUBTRACT {public int apply(int a, int b) { return a - b; }};public abstract int apply(int a, int b);
}
System.out.println(Operation.ADD.apply(2, 3)); // 5
6. 实际应用场景
  • 表示状态或常量(如DayColorHttpStatus)。
  • 参数验证(避免魔法值)。
  • 不同枚举常量实现不同行为。

优点:

  1. 类型安全:防止非法值。
  2. 清晰性:避免硬编码常量,提高可读性。
  3. 功能扩展:支持字段、方法、抽象行为等。

喜欢这期内容的话,别忘了点个赞,关注博主,这样就不会错过任何更新啦!还有,收藏一下,方便以后回顾哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

富芮坤FR800X系列之软件开发工具链(如IDE、编译器、调试器等)

文章目录 一、IDE(集成开发环境)二、编译器三、调试器四、其他辅助工具五、小结 FR800x系列作为一款低功耗蓝牙芯片,其软件开发工具链对于开发者来说至关重要。以下是对FR800x软件开发工具链的详细介绍,包括IDE(集成开…

数据赋能电商:API如何助力品牌成长

在数字时代,数据已成为电商品牌发展的核心驱动力。API(应用程序编程接口)作为数据交互的桥梁,不仅促进了数据的高效流通,更为电商品牌带来了前所未有的增长机遇。本文将深入探讨API如何助力电商品牌实现数据赋能&#…

「Java 数据结构全面解读」:从基础到进阶的实战指南

「Java 数据结构全面解读」:从基础到进阶的实战指南 数据结构是程序设计中的核心部分,用于组织和管理数据。Java 提供了丰富的集合框架和工具类,涵盖了常见的数据结构如数组、链表、栈、队列和树等。本文将系统性地介绍这些数据结构的概念、…

LeetCode - 初级算法 数组(旋转数组)

旋转数组 这篇文章讨论如何通过编程实现数组元素的旋转操作。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例: 输入: nums = [1,2,3,

c#集合详解-Dictionary、List、Queue、Stack等

目录 一,非泛型集合 1,ArrayList (1)创建和初始化ArrayList() (2)常用方法 ①Add(value) ②AddRange(value) ③Insert(index,value) ④Remove(value) ⑤RemoveAt(index) ⑥clear() ⑦Contains(v…

记一次网闸部署经历

1.在成功获取某大厂伟思网闸设备,并与客户就现有网络架构(包括防火墙与交换机)进行了详尽的沟通与评估后,我们团队精心构思并提出了一个创新的实施方案——采用透明网桥模式。这一模式以其独特的优势,即无需对客户现有…

SpringCloud(一)--SpringCloud简介

一. 引言 ​ 在微服务架构日益盛行的今天,Spring Cloud凭借其简单易用、功能强大的特性,成为了众多开发者的首选。本文仅为学习所用,联系侵删。 二. SpringCloud概述 2.1 定义 ​ Spring Cloud是一系列框架的有序集合,它巧妙地…

SQLALchemy如何将SQL语句编译为特定数据库方言

最近在一个使用fastapitortoise-orm的项目中,需要将orm的语句编译成特定数据库方言,但是查询了官方文档及一些资料却找不到合适的方法论😔,于是乎我就把目光放到了sqlalchemy身上,东找西找给我找着了。话不多说&#x…

庐山派K230学习日记2 MicroPython基础

MicroPython文档: https://docs.micropython.org/ MicroPython是编程语言 Python3 的精简高效实现,语法和 Python3 保持一致,但只实现了 Python 标准库的一小部分,并且经过优化,适用于物联网 (IoT)、消费电子和嵌入式…

《计算机组成及汇编语言原理》阅读笔记:p177-p177

《计算机组成及汇编语言原理》学习第 13 天,p177-p177 总结,总计 1 页。 一、技术总结 1.real mode A programming model where the program has access to the entire capability of the machine, bypassing security and memory management. Useful…

2000-2020年各省财政一般预算支出面板数据

2000-2020年各省财政一般预算支出面板数据 1、时间:2000-2020年 2、来源:国家统计局 3、指标:年份、省份、地方财政一般预算支出 4、范围:31省 指标解释:地方财政一般预算支出‌是指地方ZF根据预算安排&#xff0…

python小项目:给复制出来的段落前添加星号

给复制出来的段落前添加星号 最终效果二、实现步骤2.1 编写python脚本2.2 批处理脚本2.3 运行脚本 三、用到知识3.1 pyperclip 模块 最终效果 说明:复制四段内容(段落实际不做限制),在windows终端输入 bulletPointAdder&#xff0…

【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数

二分查找 搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组寻找两个正序数组的中位数(hard) 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并…

24.Java 新特性扩展(重复注解、类型注解)

一、重复注解 1、基本介绍 自从 JDK 5 引入注解以来,注解的使用开始流行,在各个框架中被广泛使用 不过注解有一个很大的限制,在同一个地方不能多次使用同一个注解 JDK 8 引入了重复注解的概念 2、具体实现 (1)自…

后端java开发路由接口并部署服务器(四)

一、安装IntelliJ IDEA,安装包下载 1、官网下载 2、网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 打开IntelliJ IDEA,输入网盘资源文件内容 三、汉化处理 插件搜索chinese,就会找到相应的插件安装重启软件即可 四、新建后端j…

Vue.js 表单验证实战:一个简单的登录页面

修改日期备注2025.1.2初版 一、前言 Vue.js 学习第一天——学会一个带有简单表单验证的登录页面。通过这个项目,会对 Vue.js 的核心概念有了更深入的理解,加深掌握如何运用 Vue 的一些强大特性来实现动态交互和数据处理。 二、项目的基本结构 首先&a…

MySQL 锁那些事

Q1 : MySQL有哪些锁,功能是什么,如何项目中使用?Q2 : 行锁是如何实现的?什么情况下会使用行锁?Q3 : 四种事务隔离形式的行锁有什么不一样?读未提交读提交可重复读串行 Q4 : MySQL 的读写都是怎样加锁的?Q5 : 需要注意什么? Q1 : MySQL有哪些锁,功能是什么,如何项目中使用…

国产文本编辑器EverEdit - 批量转码转换行符

1 批量转码&转换行符 1.1 应用场景 如果用户批量在Windows编辑文件,要上传到异构系统,如:Linux,则需要批量转换编码和换行符,此时可以使用EverEdit的批量转码功能。 1.2 使用方法 选择主菜单文档 -> 批量转码…

Java实现下载excel模板,并实现自定义下拉框

GetMapping("excel/download")ApiOperation(value "模板下载")public void getUserRecordTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException {OutputStream outputStream response.getOutputStream();InputStream…

成立一家无人机培训机构需要哪些基础配置

成立一家无人机培训机构,需要一系列基础配置来确保教学质量、学员安全以及机构的正常运营。以下是根据公开发布的信息整理出的关键基础配置: 一、场地配置 1. 飞行场:提供一个安全、宽敞的室外飞行环境,面积最好大于三千平米&…