学java框架基础

学java框架基础十九 JAVA 高级 1 单元测试 针对最小的功能单元 方法 编写测试代码对其进行正确性测试 main 方法进行单元测试的问题 只能在 main 里面调用别的方法进行测试 无法自动化测试 一个方法失败会影响其他方法的测试 无法获得测试报告 需要程序员自己去观察测试是否成功 Junit 单元测试框架

大家好,我是讯享网,很高兴认识大家。



十九、JAVA高级

1. 单元测试

针对最小的功能单元(方法),编写测试代码对其进行正确性测试。

main方法进行单元测试的问题:

  • 只能在main里面调用别的方法进行测试
  • 无法自动化测试,一个方法失败会影响其他方法的测试
  • 无法获得测试报告,需要程序员自己去观察测试是否成功

Junit单元测试框架

  • 第三方公司开源,开发工具已集成
  • 一键自动化测试
  • 生成测试报告

Junit使用步骤

  • 导入Junit的jar包到项目(IDEA已集成)
  • 为业务类中的业务方法定义对应的测试方法(公有、无参、无返回值
  • 必须加@Test,加了在之后才可测试运行
  • 开始测试,绿色通过,红色有错

自动化测试

在项目上右键Run All Test

案例

工具类

 
讯享网 

测试类

讯享网

Junit框架的常见注解

在测试方法之前执行的方法——初始化资源

在测试方法之后执行的方法——释放资源

测试类

 

2. 反射

学习框架、理解源码/开发框架

java.lang.reflect

概念: 加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)——反序列化/向外界展示已经封装好的内部东西

学什么: 如何获取类的信息并操作他们

步骤:

  1. 加载类,获取类的字节码:Class对象
  2. 获取类的构造器:Constructor对象
  3. 获取类的成员变量:Field对象
  4. 获取类的成员方法:Method对象

1)获取Class对象的三种方式

  • Class c1 = 类名.class
  • 调用Class提供的方法:public static Class forName(String package);
  • Object提供的方法:public Class getClass(); Class c3 = 对象.getClass();
    讯享网

2)获取Constructor对象

 

获取Constructor对象

 

作用:

初始化对象返回

 

3)获取成员变量Field

学java框架基础

public Field[] getFields()——获取全部public修饰的成员变量

public Field[] getDeclaredFields()——获取全部成员变量

public Field getField(String name)——根据成员变量的名字,获取某个成员变量,只能获取public修饰的

public Field getDeclaredField(String name)——根据成员变量的名字,获取某个成员变量

作用: 赋值、取值

void set(Object obj, Object value);

Object get(Object obj);

public void setAccessible(boolean flag); // 禁止访问权限

4)获取成员方法Method

同上

作用:执行

public Object invoke(Object obj, Object……args); // 出发某个对象的该方法执行

public void setAccessible(boolean flag); /// 设置true,表示禁止检查访问控制

反射的作用

  • 基本作用:可以得到一个类的全部成分然后操作
  • 可以破坏封装性
  • 适合做Java框架,基本上,主流的框架都会基于反射设计出一些通用功能

3. 注解

JAVA代码里的特殊标记

作用: 让其他程序根据在注解信息来决定怎么执行该程序

自定义注解: 自己定义注解

格式:

public @interface 注解名称{

​ public 属性类型 属性名() default 默认值;

}

 
 

原理:

  • 注解本质是一个接口,Java中所有注解都继承了Annotation接口
  • 一个实现类对象,实现了该注解以及Annotation接口

元注解:修饰注解的注解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

 

注解的解析

判断类上、方法上、成员变量上是否存在注解,并把注解里面的内容给解析出来

如何解析注解:

要解析谁上面的注解,就要先拿到谁(要解析类上面的注解,应该先获取该类的Class对象,再通过Class对象解析其上面的注解;Class、Method、Field、Constructor都实现了AnnotatedElement接口,他们都有解析注解的能力)

 

应用场景:结合反射等做框架

整理:就是做框架的时候会自定义很多注解,说明怎么执行这段程序(功能),那别人使用这个功能就要完成一些操作,这个时候就要用到反射,拿出类信息、构造器信息、成员变量和方法等信息,执行一些初始化、取值赋值、执行等一些操作。

4. 动态代理

程序为什么需要代理

对象如果干的事太多,可以通过代理来转移部分职责

代理的样子

对象有什么方法想被代理,代理一定要有对应的方法

代理如何知道有什么方法需要代理

接口:想代理的方法

案例:

BigStar

 

想要代理的接口类Star

 

代理对象的类

 

主程序


                    
小讯
上一篇 2024-12-26 16:00
下一篇 2024-12-30 16:08

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/1390.html