Junit和枚举ENUM

断言机制,JAVA中的断言机制是一种用于检查程序中某个条件是否为真的机制。它可以在程序运行时检查某个条件是否满足,如果不满足则会抛出AssertionError异常。

 

 

 

97525f66caf423e4a064070dc64dfe64.png

 

 

 

 

在java中,断言机制默认是关闭的。所以会输出u。

 

断言机制只是为了用来吃调试程序的,切勿将断言写入业务逻辑中。

 

 

 

目标字节码版本(Target Bytecode Version)是指在Java编译过程中,指定生成的字节码文件的版本。Java编译器会将Java源代码编译成字节码文件,然后由Java虚拟机(JVM)来执行这些字节码文件。

 

在Java中,每个版本的JDK都对应着一种字节码版本。不同的字节码版本可能会引入新的语言特性或优化,同时也可能会不兼容之前的版本。

 

通过指定目标字节码版本,可以确保编译器生成与指定版本兼容的字节码文件。这样,在运行时,只需要相应版本的JVM即可正确执行字节码文件。

 

在Java中,可以使用以下命令来指定目标字节码版本:

 

javac -target <version> <source files>

 

其中,<version>可以是以下几个值之一:

 

  • 1.1:Java 1.1
  • 1.2:Java 1.2
  • 1.3:Java 1.3
  • 1.4:Java 1.4
  • 1.5:Java 5
  • 1.6:Java 6
  • 11:Java 11
  • 12:Java 12
  • 13:Java 13
  • 14:Java 14
  • 15:Java 15
  • 16:Java 16

 

请注意,目标字节码版本的选择应根据项目的需求和目标平台来确定。

 

invoke方法是在代理对象的方法被调用时执行的。在这个例子中,invoke方法会在用户通过代理对象调用目标对象的方法时执行。

 

Junit单元测试

 

 

 

 

45cbe006eac1f44e2878a3dc63badc5d.png

 

 

 

Junit的断言机制,是Junit的核心

 

junit主要是测试方法的,有的方法的健壮性不高 !

 

有的代码在Junit的单元测试中虽然没有报错,但是代码的逻辑是有错误的,输出的结果和预期的结果不一样!这个时候就可以使用Junit的断言机制了 !

 

Generate里面有自动生成Junit单元测试的选项 !

 

 

322d9520f146ab40ae5738b543a5a10f.png

 

 

d11ee7c466397d94fd0cd203a26508d7.png

 

 

5a624e9739fb576d9253882081e1eba5.png

 

TestNG是一个java中的开源自动化测试框架,其灵感来自JUnit和NUnit,TestNG还涵盖了JUnit4整个核心的功能,但引入了一些新的功能,使其功能更强大,使用更方便。

 

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;

 

TestNG的AfterTest在测试JedisPool的时候不会报错,但是Junit的After和Before是会报错的 !

 

@BeforeTest

 

public void setUp(){}

 

@AfterTest

 

public void tearDown(){}

 

2、TestNG常用注解
有必要介绍一下TestNG注解的生命周期,先看一下官网支持的注解有 :

 


@BeforeSuite 在该套件的所有测试运行之前运行,仅运行一次
@AfterSuite 在该套件的所有测试运行之后运行,仅运行一次
@BeforeTest 注释的方法将在属于test标签内的所有类的所有测试方法运行之前运行,一个test标签内可能有多个class(类),在当前test标签内仅运行一次
@AfterTest 注释的方法将在属于test标签内的所有类的所有测试方法运行之后运行,一个test标签内可能有多个class(类),在当前test标签内仅运行一次
@BeforeClass 在调用当前类的第一个测试方法之前运行,在当前类中仅运行一次
@AfterClass 在调用当前类的第一个测试方法之后运行,在当前类中仅运行一次
@BeforeGroups 配置方法将在组列表运行之前运行。 此方法保证在调用属于这些组中的任何第一个测试方法之前不久运行
@AfterGroups 此配置方法将在组列表运行之后运行。该方法保证在调用属于这些组的任何最后一个测试方法之后不久运行
@BeforeMethod 注释方法将在当前类中的每个测试方法之前运行
@AfterMethod 注释方法将在当前类中的每个测试方法之后运行
@Parameters 描述如何将参数传递给@Test方法
@DataProvider 标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称
@Listeners 定义测试类上的侦听器
@Factory 将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []
@Test 将类或方法标记为测试的一部分,此标记若放在类上,则该类所有公共方法都将被作为测试方法

 

 

 

注解

 

使用关键字 enum 定义的枚举类型,在编译期后,会转换成为一个实实在在的类,而在该类中,会存在每个在枚举类型中定义好常量的对应实例对象。

 

 

 

枚举类 ColorEnum 中自定义了一个无参构造方法。创建枚举实例就等同于调用此类的参构造器。
所以,3 个实例,就会调用 3 次构造方法,就会打印 3 次 “构造方法被调用”。

 

自定义构造方法是否带参数,得看枚举实例,若枚举实例中带参数(见下文),则构造方法中得带参数;否则,就不能带参数

 

 

 

枚举只是一种语法糖,最终会被编译器生成类,而枚举实例会变成静态常量。因此,从某种意义上说,jdk1.5 引入的枚举类型是枚举常量类的代码封装。当用setter() 方法进行修改值的时候,实际上是修改的一个内存中的静态变量的值,这个值原本的意义就被修改了!

 

枚举类使用了单例模式,保证了每个枚举实例的唯一性,且每个枚举实例都是静态常量。

 

 

a6193e4bd436533e7a1c6b235e0afc3d.png

 

 

5950052a0d71ac65121704a4a0970227.png

 

 

b29cd89cfa6a347452d38bcdbf5f1643.png

 

 

2eb7019b77c4572cd6a496a7197896b9.png

 

 

1a8462673e142ad3b2392fded96e36da.png

 

 

 

 

 

 

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

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

相关文章

Windows 11将新增基于AI的搜索、生成式填充和其它AI功能

微软正在扩展 Windows 11 的内置 AI 功能列表&#xff0c;增加了几项新功能&#xff0c;例如由 AI 支持的 Windows 搜索、“Click to Do”、生成填充和擦除以及照片中的超级分辨率等功能。 Click to Do 在您按下 Windows 键并单击鼠标时触发。 它可以扫描屏幕上显示的内容&…

【复习】JS中的数据类型

文章目录 数据类型UndefinedNullBooleanNumberStringSymbolBigIntObjectArrayFunctionDateRegExp 数据类型 其实就两种&#xff0c;原始数据类型&#xff08;Primitive Types&#xff09;和引用数据类型&#xff08;Reference Types&#xff09; JS将数据分为七种数据类型&…

Java 注释新手教程一口气讲完!ヾ(≧▽≦*)o

Java 注释 Java面向对象设计 - Java注释 什么是注释&#xff1f; Java中的注释允许我们将元数据与程序元素相关联。 程序元素可以是包&#xff0c;类&#xff0c;接口&#xff0c;类的字段&#xff0c;局部变量&#xff0c;方法&#xff0c;方法的参数&#xff0c;枚举&…

封装el-upload组件,用于上传图片和视频

使用环境 vue3element-ui plus 需要根据后端返回结构修改的函数&#xff1a;onPreview onRemove onSuccess 组件使用 基本使用 源代码&#xff1a; <script setup> import AutoUploadFile from /components/auto-upload-file/index.vue function change(urls){console.…

手机sd卡数据被清空怎么恢复原状?高效、可行的恢复策略

在数字化时代&#xff0c;手机SD卡作为我们存储重要数据的“数字仓库”&#xff0c;其安全性与稳定性直接关系到我们日常生活的便捷与信息安全。然而&#xff0c;不慎操作或系统故障导致的SD卡数据清空&#xff0c;常常让人措手不及&#xff0c;焦虑万分。面对这一挑战&#xf…

windows10或11家庭版实现远程桌面连接控制

远程协助是一种Windows工具&#xff0c;允许控制者使用鼠标和键盘远程控制接受者的计算机&#xff0c;从某种程度上讲&#xff0c;这也是Win10家庭版无法远程桌面的一个有效替代方案。 步骤1. 在使用Windows远程协助之前&#xff0c;您需要先更改某些设置&#xff0c;右键单击…

Pikichu-xss实验案例-通过xss获取cookie

原理图&#xff1a; pikachu提供了一个pkxss后台&#xff1b; 该后台可以把获得的cookie信息显示出来&#xff1b; 查看后端代码cookie.php&#xff1a;就是获取cookie信息&#xff0c;保存起来&#xff0c;然后重定向跳转到目标页面&#xff1b;修改最后从定向的ip&#xff0…

【C++】关键字+命名空间

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C的命名空间&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 关键字二. 命名空间2.1 命名空间的定义2.2 命名空间的使用a. 命名空间名称作用域限定…

source insight 的开源替代

source insight 的开源替代——sourcetrail&#xff0c;开源地址&#xff1a;https://github.com/CoatiSoftware/Sourcetrail Sourcetrail 是一个交互式源代码浏览器&#xff0c;它通过为代码编制索引并收集有关其结构的数据来简化现有源代码中的导航。然后&#xff0c;Sourcet…

【Linux的内存管理】

为什么需要内存管理 分段和分页内存分段内存分页 分页情况下&#xff0c;虚拟内存如何映射到物理地址页表原理多级页表 TLB快表段页式内存管理需要为什么进程地址空间Linux的进程虚拟地址空间管理进程地址空间如何分配虚拟内存虚拟内存的管理程序编译后的二进制文件如何映射到虚…

论文笔记:微表情欺骗检测

整理了AAAI2018 Deception Detection in Videos 论文的阅读笔记 背景模型实验可视化 背景 欺骗在我们的日常生活中很常见。一些谎言是无害的&#xff0c;而另一些谎言可能会产生严重的后果。例如&#xff0c;在法庭上撒谎可能会影响司法公正&#xff0c;让有罪的被告逍遥法外。…

TIM(Timer)定时器的原理

一、介绍 硬件定时器的工作原理基于时钟信号源提供稳定的时钟信号作为计时器的基准。计数器从预设值开始计数&#xff0c;每当时钟信号到达时计数器递增。当计数器达到预设值时&#xff0c;定时器会触发一个中断信号通知中断控制器处理相应的中断服务程序。在中断服务程序中&a…

启动redis

1. 进入root的状态&#xff0c;sudo -i 2. 通过sudo find /etc/redis/ -name "redis.conf"找到redis.conf的路径 3. 切换到/etc/redis目录下&#xff0c;开启redis服务 4. ps aux | grep redis命令查看按当前redis进程&#xff0c;发现已经服务已经开启 5.关闭服务…

【Linux】进程控制(创建、终止、等待、替换)

文章目录 1. 进程创建2. 进程终止3. 进程等待4. 进程程序替换4.1 认识进程替换4.2 认识全部接口 1. 进程创建 如何创建进程我们已经在之前学习过了&#xff0c;无非就是使用fork()&#xff0c;它有两个返回值。创建成功&#xff0c;给父进程返回PID&#xff0c;给子进程返回0&…

解决:使用layui.treeTable.updateNode,更新表格数据后,done里面的事件丢失问题

1. 背景 在给树形表格添加行点击事件&#xff0c;并且只更新当前行数据。 treeTable.updateNode("SpeProjListId", result.LAY_DATA_INDEX, result);更新数据后&#xff0c;点击事件失效。 1. 给字段绑定事件&#xff1a; class"link_a link_style" , {…

AI2.0时代,普通小白如何通过AI月入30万

最近这2年AI真的太火了&#xff0c;很多人都在讨论怎么用AI赚钱、提高效率。其实&#xff0c;我觉得AI并没有那么复杂&#xff0c;尤其是如果你不做AI底层研究&#xff0c;只是利用它来帮你省事、提效、赚钱&#xff0c;那就像当初学用电脑、用手机一样简单。你不需要懂AI的技术…

论文阅读:PET/CT Cross-modal medical image fusion of lung tumors based on DCIF-GAN

摘要 背景&#xff1a; 基于GAN的融合方法存在训练不稳定&#xff0c;提取图像的局部和全局上下文语义信息能力不足&#xff0c;交互融合程度不够等问题 贡献&#xff1a; 提出双耦合交互式融合GAN&#xff08;Dual-Coupled Interactive Fusion GAN&#xff0c;DCIF-GAN&…

Oracle 数据库安装和配置详解

Oracle 数据库安装和配置详解 Oracle 数据库是一款功能强大、广泛使用的企业级关系数据库管理系统 (RDBMS)&#xff0c;适用于处理大型数据库和复杂事务。本文将介绍如何在 Linux 和 Windows 环境下安装 Oracle 数据库&#xff0c;并对其进行基本配置&#xff0c;帮助开发者快…

国外电商系统开发-运维系统拓扑布局

点击列表中设备字段&#xff0c;然后定位到【拓扑布局】中&#xff0c;可以看到拓扑发生了变化 再回头&#xff0c;您再次添加一个服务器到系统中&#xff0c;并且选择该服务器的连接节点为您刚才创建的“SDN路由器”&#xff0c;保存后&#xff0c;您可以看到这个服务器连接着…

红帽操作系统Linux基本命令2( Linux 网络操作系统 06)

本文接着上篇Linux常用命令-1继续往后学习其他常用命令。 2.3 目录操作类命令 1&#xff0e;mkdir命令 mkdir命令用于创建一个目录。该命令的语法为&#xff1a; 上述目录名可以为相对路径&#xff0c;也可以为绝对路径。 mkdir命令的常用参数选项如下。 -p&#xff1a;在创…