基础加强

单元测试

测试分类:黑盒测试和白盒测试。

黑盒测试:不需要写程序,输入值,看程序是输出预期结果。

白盒测试:需要写程序,关心程序的运行过程。

测试建议:

  包名:xx.xx.xx.test

  类名:XxxTest

  方法名:void testXxx()  可以独立运行

 

Junit单元测试步骤:

  创建测试类》写测试方法》打注解@Test注解》导入依赖(如下图)

  @Before && @After 分别在@Test的方法执行前后自动执行。

  断言       

    * 一般我们会使用断言操作来处理结果
    * Assert.assertEquals(期望的结果,运算的结果);

 

反射

 概念:

反射是框架设计的灵魂。框架是软件的半成品,使用框架可以化简编码,提高开发效率。

     类的成员变量、构造方法、成员方法等各个组成部分封装为其他对象,这就是反射机制。

好处:

            1. 可以在程序运行过程中,操作这些对象。
            2. 可以解耦,提高程序的可扩展性。

 

反射获取(.class)字节码对象3种方式

(1)Class.forName("全类名");   

    这种方式多用于加载配置文件,通过获取其中的全类名等信息,把对应的全类名字节码文件加载到内存中,获取字节码对象(Class对象)

(2)类名.class

    通过类(Class)的class属性获取字节码对象

(3)类对象.getClass()

    通过对象(Object)中的getClass()获取字节码对象。

 

注意:

同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个。

配置文件中有全类名,马上想到反射。

 

反射中常用的方法获取信息

例如成员变量、构造方法、成员方法等。没有Declared,是获取public修饰的内容,有是获取所有内容。

 

 

 

代码如下:

 

例子

通过加载配置文件、调用配置信息中类对应的方法。

 

 

 

注解

概念

Annotation又叫做元数据,与类、接口、枚举是在同一个层次,jdk1.5后的新特性,用来说明程序给计算机看。

 

作用分类

        ①编写文档:通过代码里标识的注解【生成文档doc文档】
        ②代码分析:通过代码里标识的注解【使用反射】对代码进行分析
        ③编译检查:通过代码里标识的注解【Override】让编译器能够实现基本的编译检查

 

JDK中预定义的一些注解

        * @Override    :检测被该注解标注的方法是否是继承自父类(接口)的
        * @Deprecated:该注解标注的内容,表示已过时。

      Date很多方法过期,Calender代替了。
        * @SuppressWarnings:压制警告
            * 一般传递参数all  @SuppressWarnings("all")

 

自定义注

 格式:
            元注解
            public @interface 注解名称{
                属性列表;
            }

本质:注解本质上就是一个接口,该接口默认继承Annotation接口
            * public interface MyAnno extends java.lang.annotation.Annotation {}

通过反编译看出。

属性:接口中的抽象方法

自定义注解可以包含的5中属性:基本数据类型、字符串、枚举、注解、以及他们对应的数组;

定义了属性,在使用时需要给属性赋值
                    1. 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。
                    2. 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。
                    3. 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略

 

代码:

 

元注解

用于描述注解的注解

 @Target:描述注解能够作用的位置

ElementType取值:
                    * TYPE:可以作用于类上
                    * METHOD:可以作用于方法上
                    * FIELD:可以作用于成员变量上
@Retention:描述注解被保留的阶段
@Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到

    一般自己定义的,用runtime修饰。

    @Override是

@Documented:描述注解是否被抽取到api文档中
 @Inherited:描述注解是否被子类继承

 

例子

(1)通过注解和反射,调用注解中描述的类的方法。

 

(2)通过注解,自动生成测试方法的bug信息。

 

 

posted @ 2019-03-28 21:51  juna3066  阅读(125)  评论(0编辑  收藏  举报