junit单元测试,反射,注解

今日内容

1. Junit单元测试
2. 反射
3. 注解

Junit单元测试:

* 测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。2. 白盒测试:需要写代码的。关注程序具体的执行流程。* Junit使用:白盒测试* 步骤:1. 定义一个测试类(测试用例)* 建议:* 测试类名:被测试的类名Test		CalculatorTest* 包名:xxx.xxx.xx.test		cn.itcast.test2. 定义测试方法:可以独立运行* 建议:* 方法名:test测试的方法名		testAdd()  * 返回值:void* 参数列表:空参3. 给方法加@Test4. 导入junit依赖环境* 判定结果:* 红色:失败* 绿色:成功* 一般我们会使用断言操作来处理结果* Assert.assertEquals(期望的结果,运算的结果);* 补充:* @Before:* 修饰的方法会在测试方法之前被自动执行* @After:* 修饰的方法会在测试方法执行之后自动被执行

反射:框架设计的灵魂

* 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
* 反射:将类的各个组成部分封装为其他对象,这就是反射机制* 好处:1. 可以在程序运行过程中,操作这些对象。2. 可以解耦,提高程序的可扩展性。* 获取Class对象的方式:1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象* 多用于配置文件,将类名定义在配置文件中。读取文件,加载类2. 类名.class:通过类名的属性class获取* 多用于参数的传递3. 对象.getClass():getClass()方法在Object类中定义着。* 多用于对象的获取字节码的方式* 结论:同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个。* Class对象功能:* 获取功能:1. 获取成员变量们* Field[] getFields() :获取所有public修饰的成员变量* Field getField(String name)   获取指定名称的 public修饰的成员变量* Field[] getDeclaredFields()  获取所有的成员变量,不考虑修饰符* Field getDeclaredField(String name)  2. 获取构造方法们* Constructor<?>[] getConstructors()  * Constructor<T> getConstructor(类<?>... parameterTypes)  * Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)  * Constructor<?>[] getDeclaredConstructors()  3. 获取成员方法们:* Method[] getMethods()  * Method getMethod(String name, 类<?>... parameterTypes)  * Method[] getDeclaredMethods()  * Method getDeclaredMethod(String name, 类<?>... parameterTypes)  4. 获取全类名	* String getName()  * Field:成员变量* 操作:1. 设置值* void set(Object obj, Object value)  2. 获取值* get(Object obj) 3. 忽略访问权限修饰符的安全检查* setAccessible(true):暴力反射* Constructor:构造方法* 创建对象:* T newInstance(Object... initargs)  * 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法* Method:方法对象* 执行方法:* Object invoke(Object obj, Object... args)  * 获取方法名称:* String getName:获取方法名* 案例:* 需求:写一个"框架",不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法* 实现:1. 配置文件2. 反射* 步骤:1. 将需要创建的对象的全类名和需要执行的方法定义在配置文件中2. 在程序中加载读取配置文件3. 使用反射技术来加载类文件进内存4. 创建对象5. 执行方法

注解:

* 概念:说明程序的。给计算机看的
* 注释:用文字描述程序的。给程序员看的* 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
* 概念描述:* JDK1.5之后的新特性* 说明程序的* 使用注解:@注解名称* 作用分类:①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】②代码分析:通过代码里标识的注解对代码进行分析【使用反射】③编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Override】* JDK中预定义的一些注解* @Override	:检测被该注解标注的方法是否是继承自父类(接口)的* @Deprecated:该注解标注的内容,表示已过时* @SuppressWarnings:压制警告* 一般传递参数all  @SuppressWarnings("all")* 自定义注解* 格式:元注解public @interface 注解名称{属性列表;}* 本质:注解本质上就是一个接口,该接口默认继承Annotation接口* public interface MyAnno extends java.lang.annotation.Annotation {}* 属性:接口中的抽象方法* 要求:1. 属性的返回值类型有下列取值* 基本数据类型* String* 枚举* 注解* 以上类型的数组2. 定义了属性,在使用时需要给属性赋值1. 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。2. 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。3. 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略* 元注解:用于描述注解的注解* @Target:描述注解能够作用的位置* ElementType取值:* TYPE:可以作用于类上* METHOD:可以作用于方法上* FIELD:可以作用于成员变量上* @Retention:描述注解被保留的阶段* @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到* @Documented:描述注解是否被抽取到api文档中* @Inherited:描述注解是否被子类继承* 在程序使用(解析)注解:获取注解中定义的属性值1. 获取注解定义的位置的对象  (Class,Method,Field)2. 获取指定的注解* getAnnotation(Class)//其实就是在内存中生成了一个该注解接口的子类实现对象public class ProImpl implements Pro{public String className(){return "cn.itcast.annotation.Demo1";}public String methodName(){return "show";}}3. 调用注解中的抽象方法获取配置的属性值* 案例:简单的测试框架
* 小结:1. 以后大多数时候,我们会使用注解,而不是自定义注解2. 注解给谁用?1. 编译器2. 给解析程序用3. 注解不是程序的一部分,可以理解为注解就是一个标签

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

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

相关文章

OIS几个重要的类的使用

一 OIS的简介&#xff1a; OIS有很多的类&#xff0c;头文件也10多个&#xff0c;很多人一到就蒙了&#xff0c;其实不然&#xff0c;虽然头文件很多&#xff0c;但是都很简单。 #include "OIS.h" 包含了所有用到的头文件&#xff0c;使用OIS时&#xff0c…

元宇宙的“42条共识”

来源&#xff1a; 量子学派*以下内容、图片综合自《图说元宇宙》《设计元宇宙》系列01元宇宙不是一天建成的罗马不是一天建成的&#xff0c;元宇宙也一样。人类从未像今天这样&#xff0c;可以自己成为“创世主”。元宇宙融合了信息技术&#xff08;5G/6G&#xff09;、互联网时…

struts2被淘汰的原因

Struts2是一个基于MVC设计模式的Web应用框架&#xff0c;它本质上相当于一个Servlet。在MVC设计模式中&#xff0c;Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品&#xff0c;是在Struts1和WebWork的技术基础上进行了合并的全新的Str…

手把手教你用java读写excel表格文件(POI,EasyExcel)

视频链接-我是学习之星我为狂神打call~ 【狂神说Java】POI及EasyExcel一小时搞定通俗易懂 想给项目添加一个表格导入导出功能吗&#xff1f; “xxx管理系统”没有导入导出功能逼格不够了&#xff1f; 想简单入手下 how to 用java 生成excel又找不到合适的教程&#xff1f; com…

欢迎参加2022年第一次《城市大脑建设标准规范》专家研讨会

来源&#xff1a;世界数字大脑标准研究组2018年以来&#xff0c;城市大脑正成为智慧城市和智能产业的新热点&#xff0c;有近500个城市提出城市大脑的建设规划&#xff0c;数千家大中型科技企业进入城市大脑的建设领域。如何理清城市大脑的概念和定义&#xff0c;制定统一的城市…

面试问题

什么是闭包&#xff1f;1. 当一个内部函数被调用&#xff0c;就会形成闭包&#xff0c;闭包就是能够读取其他函数内部变量的函数定义&#xff1a;闭包是能够读取其他函数内部变量的函数&#xff0c;在js中&#xff0c;只有函数内部的子函数才能读取局部变量&#xff0c;所以闭包…

Spring常用注解的讲解

转载&#xff0c;原文链接 作者&#xff1a;字母哥博客 本文出自&#xff1a;springboot深入浅出系列 文章目录一、常用注解回顾1.1 RequestBody与ResponseBody1.2. RequestMapping注解1.3. RestController与Controller1.4. PathVariable 与RequestParam二、接收复杂嵌套对象参…

复杂系统与人工生命:十年研究概览

来源&#xff1a;集智俱乐部作者&#xff1a;Thomas McAtee、Claudia Szabo译者&#xff1a;陈翔 审校&#xff1a;刘培源编辑&#xff1a;邓一雪导语人工生命&#xff08;artificial life&#xff09;是通过仿真建模、机器技术和生物化学等方式模拟自然生命系统&#xff0c;进…

day22-面向对象之封装

# 封装 什么是封装? # 就是将复杂的丑陋的,隐私的细节隐藏到内部,对外提供简单的使用接口 # 对外隐藏内部实现细节,并提供访问的接口 为什么需要封装? ​ # 两个目的 ​ 1.为了保证关键数据的安全性 ​ 2.对外部隐藏实现细节,隔离复杂度 什么时候应该封装? #​ 当有一些数据…

5.1传输层概述

5.1传输层概述 文章目录传输层概述传输层的两个协议传输层的寻址与端口传输层概述 传输层的两个协议 传输层的寻址与端口

多细胞生命进击之路:单细胞为何放弃自由,长成复杂的多细胞?

来源&#xff1a;集智俱乐部作者&#xff1a;Veronique Greenwood译者&#xff1a;赵雨亭审校&#xff1a;张澳编辑&#xff1a;邓一雪导语人类作为复杂的多细胞生命&#xff0c;似乎理所当然地认为&#xff0c;多细胞生命相对单细胞生命有绝对的优势。但实际上单细胞生命进化为…

5.2 UDP协议

5.2 UDP协议 文章目录用户数据报协议udp概述udp首部形式udp校验用户数据报协议udp概述 udp首部形式 udp校验

一个XML转换的例子

问&#xff1a; 我想把字符串转换成stream, 然后 System.Xml.XmlTextReader xmlReader new System.Xml.XmlTextReader(System.IO.Stream input) ______________________________________________________________________________________________ 答1&#xff1a; 为何一定要…

msil 笔记

public class TestImpl : ITest {// Propertiespublic string Address{get{return "abc";}}//msil:address不是在接口中定义的 //hidebysig:使用时看不见这个方法,因为是给属性用的.specialname也是说是给属性用的(但不指明),只是说是特殊的. .method public hidebys…

焦李成院士:进化优化与深度学习的思考

来源&#xff1a;AI科技评论作者&#xff1a;焦李成整理&#xff1a;维克多编辑&#xff1a;青暮2021年12月17日&#xff0c;西安电子科技大学人工智能学院教授、欧洲科学院外籍院士、IEEE Fellow焦李成受邀参加2021中国计算机大会“下一代演化计算发展趋势”论坛&#xff0c;并…

5.3.1 TCP协议特点和TCP报文段格式

5.3.1 TCP协议特点和TCP报文段格式 文章目录tcp协议的特点tcp 报文段首部格式tcp协议的特点 tcp 报文段首部格式

互补性:从不同的角度思考同一个事物时,发现它同时具有不同甚至相互矛盾的性质...

来源&#xff1a;混沌巡洋舰检验一流智力的标准是头脑中能同时持有两种截然相反的观点&#xff0c;却能并行不悖。——弗朗西斯斯科特菲茨杰拉德显然&#xff0c;这种互补性推翻了学术的本体论。真理是什么&#xff1f;我们之所以要提出彼拉多的问题&#xff0c;并不是出于怀疑…

ObjectArx R14-2007下载地址

2008 &#xff0d;32位 http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_32Bit.exe &#xff0d;64位 http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_64Bit.exe 2007 &#xff0d;Core http://download.autodesk.com/esd/objectarx/2007/…

5.3.2 TCP连接管理

5.3.2 TCP连接管理 文章目录tcp 连接管理tcp的连接简历TCP传输连接中的SYN、ACK、SEQ、 AN分别是什么意思?syn洪泛攻击tcp的连接释放tcp 连接管理 tcp的连接简历 TCP传输连接中的SYN、ACK、SEQ、 AN分别是什么意思? syn洪泛攻击 tcp的连接释放

2021年量子计算的研发现状与未来展望

来源&#xff1a;AI科技评论作者&#xff1a;杏花编辑&#xff1a;青暮从硬件、软件和算法以及各国政策等方面展现量子技术最新进展。超导量子计算过去宣称实现的量子霸权在最新的获得戈登贝尔奖被宣告打破&#xff0c;但谷歌和IBM依然在这一领域有着雄心勃勃的计划。离子阱则凭…