测试,反射,注解概念知识

测试分类:
1,白盒测试:需要写代码。关注程序具体的执行流程
2,黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值

Junit使用:白盒测试

  • 步骤
    1,定义一个测试类(测试用例)
    2,定义测试方法:可以独立运行
    3,给方法加@Test
    4,导入Junit依赖环境

判断结果:
红色:失败
绿色:成功
(说白了,我们一般都不会去看结果的正确性来判断程序有无bug,但为了能输出正确的结果,我们一般会采用断言的方式来处理结果)
断言:Assert.assertEquals(期望的结果,运算的结果);

@Before:初始化方法,用于资源申请,所有测试方法再执行之前都会先执行该方法。
@After:释放资源方法,在所有测试方法执行完后,都会自动执行该方法

反射:框架设计的灵魂

  • 框架:半成品软件。可以在框架的基础上进行软件开发,简化代码

  • 反射:将类的各个组成部分封装为其他对象,这就是反射机制
    好处:
    1,可以在程序运行过程中,操作这些对象。
    2,可以解耦,提高程序的可扩展性。

  • 获取Class对象的方式:
    1,class.forName(“全类名”):将字节码文件加载进内存,返回Class对象
    (多用于配置文件,将类名定义在配置文件中。读取文件,加载类)
    2,类名.class:通过类名的属性class获取
    (多用于参数的传递)
    3,对象.getClass():getClass()方法在Object类中定义着。
    (多用于对象的获取字节码的方式)

结论:同一个字节码文件在一次程序运行过程中,只会被加载一次,无论通过哪一种方式获取Class对象都是同一个。

常用获取功能:
1,获取成员变量:

Filed[] getFileds():
Filed getFiled(String name)

Filed[] getDeclaredFileds()
Filed getDeclaredFiled(String name)

Filed成员变量操作:
1,设置值:void set(Object object,Object value)
2,获取值:get(Object obj)
3,忽略访问权限修饰符的安全检查:setAccessible(true):暴力反射


2,获取构造方法:

Constructor<?>[] getConstructor():获取所有public修饰的成员变量
Constructor<T> getConstructor(Class<?>... parameterTypes):获取指定名称的public修饰的成员变量

Constructor<?>[] getDeclaredConstructor():获取所有成员变量,不考虑修饰符
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

3,获取成员方法:

Method<?>[] getMethods()
Method<T> getMethod(Class<?>... parameterTypes)

Method<?>[] getDeclaredMethods()
Method<T> getDeclaredMethod(Class<?>... parameterTypes)

4,获取类名

String getName()

在这里插入图片描述


  • 案例:
    需求:写一个“框架”,不能改变该类的任何代码的前提下,可以帮助我们创建任何类的对象,并且执行其中任意方法。
    实现:
    1,配置文件
    2,反射
    步骤:
    1,将需要创建的对象的全类名和需要执行的方法定义在配置文件中
    2,在程序中加载读取配置文件
    3,使用反射技术来加载类文件进内存
    4,创建对象
    5,执行方法

注解:
概念:说明程序的,给计算机看的
注释:用文字描述程序的,给程序员看的

使用注解:@注解名称(比如@Override)

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

发布了52 篇原创文章 · 获赞 0 · 访问量 4279

猜你喜欢

转载自blog.csdn.net/qq_43616001/article/details/104107237