2020-07-16Java入门(二十九)Junit 单元测试 反射 注解

junit

/**

* junit 单元测试

* 黑盒:给输入值 看程序 是否输出期望值

* 白盒测试:junit 管住程序的具体流程

* junit cn.itcast.test包名 独立运行 方法名一一对应 加注解 不建议有参数 导入junit的依赖

*/

反射

反射集中案列

/**

* 反射案例 写一个“框架”在不改变任意代码的情况下 可以创建任意类的对象 并且执行其中的任意方法

* 配置文件

* 加载 读取

* 反射 加载类 进内存

*/

public class FansheTest {

public static void main(String[] args)throws Exception {

//可以创建一个对象 执行任意的方法

        /**

        *  框架 不能改变该类的任何代码 可以创建任意类的对象 执行任意的方法

        *

*  person p = new Person;

        *  p.sleep();//弊端 半成品 代码会改变

        */

        //加载配置文件

        //1.1创建properties 对象

        Properties properties =new Properties();

//1.2加载配置文件 转换为一个集合

      //1.2.1获取class目录下的配置文件

        ClassLoader classLoader = FansheTest.class.getClassLoader();//类加载qi

        InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");//配置文件

        properties.load(resourceAsStream);

//获取配置文件对应的数据

        String className = properties.getProperty("className");

String methodName = properties.getProperty("methodName");

//反射 加载该类进内存

        Class aClass = Class.forName(className);

//创建对象

        Object o = aClass.newInstance();

//获取方法对象

        Method method = aClass.getMethod(methodName);

//执行方法

        method.invoke(o);

}

}

配置文件




注解

* //注解 jdk1.5之后 声明程序

* 编译检查 @Override 编译检查 是否父类重写的方法

* jdk 基本的内置注解@Override @Deprecated 标注的内容以过时

* @SupperssWarnings 压制警告 一般传递参数all

* 自定义注解

* 注解的本质 就是一个接口 该接口默认集成Annotation接口

*

* 接口中的抽象方法  、

* 属性的返回值类型 基本的数据类型 string 枚举 注解

* 元注解:@Target 注解能够作用的位置 @Retention 描述注解保留的阶段

你可能感兴趣的:(2020-07-16Java入门(二十九)Junit 单元测试 反射 注解)