【无标题】

Junit框架入门

Junit单元测试框架

解释:单元测试就是针对最小功能单元(方法),编写测试代码对其进行正确性测试

优点:

一:灵活编写测试代码,可以针对某个方法执行测试,也支持一键完成全部方法的自动化测试,且各自独立

二:不需要程序员去分析测试结果,会自动生成测试报告出来

流程:

第一步导包(IDEA里面有Junit框架不需要手动导包)

第二部为需要测试的业务类,定义对应的测试类,并为每个业务方法,编写对应的测试方法(必须:公共、无参、无返回值)

第三步:测试方法上碧血声明@Test注解,然后再测试方法中,编写代码调用被测试的业务进行测试

第四步:开始测试:选中测试方法,右键选者Juint运行·,如果测试时绿色,成功。红色则失败

核心机制:断言机制

可以通过预测业务方法的结果

Assert.assertEquals(提示方法有bug,正确值,调用方法后得到的值)

常见注解(Junit4版本):

@Test 测试类中的方法必须用这个

@Before 用来修饰一个实例方法,该方法会在每个测试方法执行之前执行一次

@After 用来修饰一个实例方法,该方法会在每一个测试方法执行之后执行一次

@BeforeClass 用来修饰一个静态方法,该方法会在所有测试方法之前执行一次

@AfterClass 用来修饰一个静态方法,该方法会在所有的测试方法执行之后执行一次·

反射

认识反射获、获取类

反射(Reflection):反射就是加载类,并允许已变成的方式揭破类中的各种成分------------用来做框架的

方法一:Class c1 = 类名.class

调用Class提供的方法:public static Class forName(String package)

Object提供的方法:public Class getClass();Class c3 = 对象.getClass

获取类的构造器:Constructor对象

getConstructors()获取全部构造器(只能获取Public修饰的)

getDeclaredContructors() 获取全部构造器(只要存在就拿得到)

getConstructor(Class<?>... paramterTypes) 获取某个构造器,只能获取public修饰的

getDeclaredContructor(Class<?>... paramterTypes) 获取指定的构造器,只要存在就能难拿到

作用:依然是初始化一个对象返回

newInstance(Object... initargs)调用此构造器对象表示的构造器,并传入参数,完成对象的初始化

setAccessible(boolean flag)设置为true,则表示禁止减产访问控制(暴力反射)

获取类的成员变量:Fieid对象

getFileds() 获取类的全部成员变量(仅可获取Public修饰的)

getDeclaredFilelds()获取类的全部成员变量

getField(String name) 获取类的某个成员变量(只能获取Public修饰的)

getDeclaredField()获取类的某个成员变量

作用:依然是赋值和取值

set(Object object,Object value)赋值

get(Object obj) 取值

获取类的成员方法:Method对象

getMethods()获取类的全部成方法(只能获取Public修饰的)

getDeclaredMethods()获取类的全部成员方法

getMethod()获取类的某个成员方法(只能获取Pub修饰的)

getDeclaredMethod()获取类的某个成员方法

作用:依然是执行

invoke(Object obj,Object... args)出发某个方法的执行

set Accessible(boolean flag)设置为true,表示禁止检查访问控制(暴力反射)

作用、应用场景

基本作用:可以得带一个类的全部成分然后操作

作用二:破坏封装性

最重要的用途;适合做Java框架,基本上的主流框架都会基于反射设计出一些通用的功能

注解

概述:

Java里面的一些特殊标记如:@Test @Override 作用是:让其他程序根据注解信息来决定如何执行该程序

自定义注解:

自己定义注解:public @interface 注解名称{ public 属性类型 属性名()default 默认值;}

如果自定义注解中只有一个属value或者其他属性有默认值时,特殊属性使用的时候属性名可以不写

本质是一个接口,所有的注解都继承了Annotation

元注解

修饰注解的注解~~

常见元注解一:@Target

声明被修饰的注解只能在哪些位置上使用

ElementType.TYPE 表示该只能用在类上

TYPE 只能用在类、接口上

FIELD 只能用在成员变量上

METHOD 只能用在成员方法上

PARAMETER 只能用在方法参数上

CONSTRUCTOR 只能用在构造器上

LOCAL_VARIABLE 只能用在局部变量上

常见元注解二:@Retention

声明注解的保留周期

使用方式:@Retention(RetentionPolicy.RUNTIME)

SOURCE 只能用在源代码阶段,字节码文件中不存在

CLASS(默认值) 保留到字节码文件阶段,运行阶段不存在

RUNTIME(开发常用) 一直保留到运行阶段

注解的解析:

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

解析谁的注解先得得到谁,得到之后在调用注解解析的方法

getDeclaredAnnotations()获取当前对象上面的注解

getDeclaredAnnotation(指定对象)获取指定对象上的注解

isAnnotationPresent(Class<Annotation> annotationCalss)判断当前对象上是否存在某个注解

应用场景:

动态代理

给一个实例创建一个接口,接口里面有实例的方法(方便其他实例使用)

Proxy代理类:选择lang包下的reflect反射包的Proxy

Proxy.newProxyInstance((参数一:用于指定一个类加载器 当前类调用getClassLoder方法),(参数二:指定生成的代理长什么样子,有什么方法),(参数三:用来指定生成的代理对象要干什么事情:创建一个InvocationHandler匿名内部类对象))返回一个Object类对象

===========================思维导图===============================

相关推荐
JH30738 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_9 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble9 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟9 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖9 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_124987075311 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_11 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.11 小时前
Day06——权限认证-项目集成
java
瑶山11 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy11 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法