Junit单元测试

Day16
Junit单元测试用于取代main方法
Junit的框架使用:
作用:代替main方法
@Test
在方法上加
Junit框架中的三个注解:
@Test
1.让普通的方法取代main方法
@Before
2.在@Test方法运行之前运行

@After

3.在@Test方法运行之后运行

        **注解(Annotation)**

什么是注释:
给程序员看的
什么是注解:
给编译器或JVM看的代码说明
是和类,接口,枚举是在同一个层次
注解的作用:
1.编译检查
2.代码分析
3.编写文档
JDK提供的注解:
1.@Deprecated(标识某一个方法过时的,通过一个中划线标识的)
Date类中使用过
2.Override
标志某一个方法重写父类的
3.@SuppressWarnings(抑制警告)
同时使用{ “警告1” ,”警告2”,…. }
1.unused 忽略未使用
2.deprecation 忽略过时
3.rawtypes:忽略类型安全(不使用泛型警告)
4.unchecked 忽略安全检查
5.null 忽略空指针
6.serial 忽略序列号
7.all 忽略所有警告

自定义注解:
注解也是一种类型
注解定义用的关键字@Interface
注解可以使用类上,方法上,变量上
使用格式:
@加注解名
给自定义注解添加属性,使用自定义注解要添加参数
注解属性定义;
public 返回值类型 属性名()default
20
说明:
注解中的属的返回值类型必须是:
基本类型,字符串String,Class,注解.枚举.以及以上类型的一维数组

注解的本质是一个特殊的接口,默认继承
Annotation,属性对应的是抽象方法

javap反编译

注解使用时的注意事项:
1.所有属性必须赋值(有默认值得可以不赋值)
2.格式:
@注解名(属性名=属性值,…..),必须为所有属性赋值,当属性有默认值时,可以省略不写.
3.如果一个注解中只有一个属性需要赋值且属性名为value,属性名可以省略
单纯定义注解没有注解解析器,没有效果,使用注解效果的,要想有效果,需要注解解析器.
元注解:RawAnnotation
元注解:用来修饰注解的,注解的注解
@元注解名(参数)
@Documented,使用javaDoc生成api

@Retention:用来修饰其他注解的生命周期

源码级别:表示被修饰的注解只在源码是存在,编译后编译自动删除
(RetentionPolicy.SOURCE)
字节码级别:
表示被修饰的注解在源码是存在,编译后也存在,加载到内存时去掉
(RetentionPolicy.ClASS)
运行时级别:
表示被修饰的注解在源码是存在,编译后也存在,运行时也存在
(RetentionPolicy.RUNTIME)
如果不适用元注解修饰注解,那么默认是(RetentionPolicy.ClASS)

@Target确定注解的作用目标
参数有多个可选值
用来在类,方法,变量上使用
类/接口上:
ELementType.TYPE

普通方法上:
ELementType.METHOD

构造方法上:
ELementType.CONSTRUCTOR

只能用在成员变量上:

ELementType.FIELD

类加载器ClassLoader:
负责加载Class的对象
1.一个类的class文件对象是由类加载器加载
2.所有的类加载器都是java.lang.ClassLoader的子类
3.类加载器一共由3类:
3.1引导类加器(等级最高):BootstrapClassLoader(不是类)
负责加载JDK的核心类(Scanner,…)
3.2扩展类加载器(等级第二):ExtClassLoader
负责加载Ext下扩展包中的内容
3.3应用类加载器(等级第三):AppClassLoader:
负责加载我们自定义的类/第三方的类

重点:
如何获取一个类到底是由哪一个类加载器加载的?
类名.class.getClassLoader
默认扩展包下的类我们程序员不能使用(权限不够)
类加载器加载机制:1全盘负责 2委托机制
采用全盘负责委托机制保证了一个类只被一个类加载器加载一次,最终生成一个Class对象.
===================================静态代理模式的原理:基于接口
动态代理(基于接口和反射)
代理模式的作用:
增强被代理对象的功能
代理类是JDK给我们自动生成
代理类中有一个处理类对象(public Class
处理类implements InvocationHander)
使用java提供的代理框架自动生成代理对象
重点是:生成动态代理对象时,需要传递的参数

Proxy.newInstance(类加载器,//默认传递本类的加载器,interface//代理对象和被代理对象都要实现的接口的字节码文件数组,h//处理类对象//处理类对象必须实现InvocationHander接口);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值