Junit和枚举ENUM

news2024/11/18 17:48:36

断言机制,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.coloradmin.cn/o/2178837.html

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

相关文章

【设计模式-中介者模式】

定义 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为设计模式&#xff0c;通过引入一个中介者对象&#xff0c;来降低多个对象之间的直接交互&#xff0c;从而减少它们之间的耦合度。中介者充当不同对象之间的协调者&#xff0c;使得对象之间的通信变得简单且…

fiddler抓包13_响应后断点 - 篡改响应

课程大纲 原理 响应后断点&#xff08;After Response Breakpoint&#xff09;&#xff1a;Fiddler拦截、篡改服务器返回的响应&#xff0c;再返回给客户端。 应用场景 1.分析服务器响应数据 2.测试前端对特定返回的处理、展示 3.模拟网络中断、不稳定场景 单个断点 VS 全局…

信息安全数学基础(22)素数模的同余式

前言 信息安全数学基础中的素数模的同余式是数论中的一个重要概念&#xff0c;它涉及到了素数、模运算以及同余关系等多个方面。 一、基本概念 素数&#xff1a;素数是指只能被1和它本身整除的大于1的自然数。素数在密码学中有着广泛的应用&#xff0c;如RSA加密算法就依赖于大…

2024年企业博客SEO趋势与策略

随着互联网的快速发展和搜索引擎算法的不断演进&#xff0c;企业博客作为内容营销和SEO&#xff08;搜索引擎优化&#xff09;的重要载体&#xff0c;正面临着前所未有的机遇与挑战。进入2024年&#xff0c;企业若想通过博客在激烈的市场竞争中脱颖而出&#xff0c;就必须紧跟S…

verilog实现FIR滤波系数生成(阶数,FIR滤波器类型及窗函数可调)

在以往采用 FPGA 实现的 FIR 滤波功能&#xff0c;滤波器系数是通过 matlab 计算生成&#xff0c;然后作为固定参数导入到 verilog 程序中&#xff0c;这尽管简单&#xff0c;但灵活性不足。在某些需求下&#xff08;例如捕获任意给定台站信号&#xff09;需要随时修改滤波器的…

产品管理- 互联网产品(5):运营知识与技能

了解运营 1、运营的基础是产品认清受众&#xff0c;切实解决问题、用户需求 2、运营活动贯穿产品的整个生命周期 3、找准用户&#xff0c;建立MVP 4、明确产品的应用场景。用户在何场景下基于何种需求使用产品&#xff1f;务必短流程 5、AARRR模型 6、运营管理流程类似产品管理…

【CAM350】使用总结 <一>{ 光绘Gerber 对齐 }

〇、废话&#xff1a; 由于allegro和CAM350之间参数设置的问题&#xff1b;导致钻孔层和数据交付生产出现数据问题&#xff0c;或者同一个工程前后迭代&#xff0c;需要找出差别。 一、打开CAM350,打开两份光绘文件 二、增加工艺边后&#xff0c;不是很方便的找出区别&#x…

水波荡漾效果+渲染顺序+简单UI绘制

创建场景及布置 创建新场景Main,在Main场景中创建一个plane物体&#xff0c;命名为WaterWavePla,具体数值及层级面板排布如下&#xff1a; 编写脚本 创建一个文件夹&#xff0c;用于存放脚本&#xff0c;命名Scripts,创建一个子文件夹Effect,存放特效相关脚本&#xff0c;创建…

[Linux]:线程(二)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;Linux学习 贝蒂的主页&#xff1a;Betty’s blog 与Windows环境不同&#xff0c;我们在linux环境下需要通过指令进行各操作&…

LQR算法核心思想

本章以倒立摆为解决目的 什么是线性二次型控制器&#xff08;LQR&#xff09; 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵&#xff1a;描述系统本身物理特性的一个矩阵&#xff0c;它是由系统本身的机械结构、物理结构决定的&#xff0c;无法…

基于单片机8路数字电压表电压采集系统

**单片机设计介绍&#xff0c;基于单片机8路数字电压表电压采集系统 文章目录 前言概要功能设计设计思路 软件设计效果图 程序设计程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技…

【C#】BotSharp:开源机器学习平台

随着人工智能&#xff08;AI&#xff09;和自然语言处理&#xff08;NLP&#xff09;技术的迅速发展&#xff0c;聊天机器人已经成为现代应用和服务的重要组成部分。无论是智能客服、虚拟助手&#xff0c;还是业务自动化和数据分析&#xff0c;智能对话系统正在各个领域发挥重要…

【2024.9.29练习】R 格式

题目描述 题目分析 带小数点的高精度乘法。小数点在计算时忽略&#xff0c;只需在最终打印字符串的时候在合适位置四舍五入即可。对于&#xff0c;可理解为对d乘2总共n次。因此使用“单精度高精度”类型的算法足矣。 我的代码 一开始代码有错误&#xff0c;我只想到了对小数点…

GAMES101(作业8)

作业8 题目&#xff1a; 模拟绳子动画&#xff0c;包括基于物理的&#xff0c;和非物理的&#xff0c;应该修改的函数是:rope.cpp 中的void Rope::simulateEuler(... Rope::rope(...)&#xff0c;&#xff0c;void Rope::simulateVerlet(...) 代码框架&#xff1a; main:负…

9.26-9.29学习

一.项目结构的建立 5个微服务模块 新建好各个模块后&#xff0c;在项目pom下引入各模块。各pom文件指定springboot版本2.1.8.RELEASE .gitignore #表示任意路径下的xx文件 **/mvnw **/mvnw.cmd**/.mvn **/target/.idea**/.gitignore 二.数据库初始化 一个微服务模块对应一个数…

微信小程序 蓝牙通讯

客户的需求如下&#xff1a;通过微信小程序控制蓝牙ble设备(电子面膜)&#xff0c;通过不同指令控制面膜的亮度和时间。 01.首先看下客户的ble设备服务文档&#xff1a;(本部分需要有点蓝牙基础,在调试过程中可以用安卓软件nRF Connect软件来执行测试命令) 0xFFF1灯控命令 命…

PCL 法线空间采样

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 法线计算 2.1.2 基于法线进行采样 2.1.3 可视化原始点云和采样后的点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实…

英伟达的AI一键生成数字人物理运动动画框架:统一控制模式,提升交互性和沉浸感

在虚拟现实(VR)、增强现实(AR)和3D内容创作领域,创建具有真实感和动态性的虚拟角色一直是技术上的挑战。最近,英伟达推出了一种新的框架,通过将物理驱动的角色控制视为运动修复问题,实现了跨场景的虚拟角色控制。这一创新方法不仅支持多种控制模式,还能够生成连贯且自…

container_of 函数的分析

这个函数的目的是&#xff0c; 通过结构体里面的内容 找到 大结构体的 基地址。 函数的原型是&#xff1a;  &#xff30;&#xff34;&#xff32;是指针 &#xff54;&#xff59;&#xff50;&#xff45; &#xff0c; &#xff4d;&#xff45;&#xff4d;&#xff…