java笔记——(Junit测试,反射)

目录

Junit测试

步骤

反射:框架设计的灵魂

好处:

获取Class对象的方式:

结论

class对象功能

获取功能

小结


Junit测试

步骤

        1、定义一个测试类(测试用例)

                建议

                        测试类名:被测试的类名Test   CalculatorTest

                        包名:xxx.xxx.xx.test        cn.itcast.test

        2、定义测试方法:可以独立运行

                建议

                        方法名:test测试的方法名     testAdd()

                        返回值:void

                        参数列表:空参

        3、给方法加@Test

        4、导入junit依赖环境

        判定结果:

                红色:失败

                绿色:成功

                一般我们会使用断言操作来处理这个结果

Assert.assertEquals(期望的结果,运算的结果);

初始化方法

用于资源申请,所有测试方法在执行前都会执行该方法



@Before

//修饰方法会在测试方法执行前被自动执行

Public  void init(){

System.out.println("init……")

}

//释放资源方法:

//在所有测试方法执行完成后,都会执行该方法

@After

//修饰方法会在测试方法执行之后在动被执行

Public  void  close(){

System.out.println("close")

}

反射:框架设计的灵魂

        框架:半产品软件。可以再框架的基础上进行软件开发,简化编码

        反射:将类的各个组成部分封装为其他对象,这就是反射机制

好处:

        1、可以在程序运行过程中,操作这些对象

        2、可以解耦,提高程序的可扩展性。

获取Class对象的方式:

     

   Class,forName("全类名");将字节码文件加载进内存,返回Class对象

        //多用于配置文件,将类名定义在配置文件中。读取文件,加载类

        类名.class:通过类名的属性类获取

        //多用于参数的传递

        对象.getClass():getClass()方法在Object类中定义着。

        //多用于对象的获取字节码的方式

结论

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

class对象功能

获取功能

1、获取成员变量们

Field[] getFields()                      //获取所有public修饰的成员变量

Field getField(String name)     //获取制定名称的 public修饰的成员变量



Field[] getDeclaredFields()       //获取所有的成员变量,不考虑修饰符

Field getDeclaredField(String name)

2、获取构造方法们

Constructor<?>[] getConstructors()

Constructor<T>getconstructor(类<?>...parameterTypes)



Constructor<T>getDeclaredconstructor(类<?>...parameterTypes)

Constructor<?>[] getDeclaredconstructors()

3、获取成员方法们

 Method[] getMethods()

Method getMethod(String name,类<?>...parameterTypes)



Method[] getDeclaredMethods()

Method getDeclaredMethod(String name,类<?>...parameterTypes)



4、获取类名

String getName();



Field:成员变量

操作

设置值

Void set(Object obj,object value)

获取值

Get(Object obj)

//忽略访问修饰符的安全检查

setAccessible(true)    //暴力反射

Constructor    :    构造方法

创建对象:

T newInstance(Object…initargs)

//如果使用空参数构造方法创建对象,操作可以简化:class对象的newInstance方法

Method:方法对象

//执行方法:

Object invoke(Object obj,Object...args)

//获取方法名称:

String getName    //获取方法名

小结

                通过配置文件来调用包中类的代码,获取包中的变量和方法,不用在去动自己的源代码,直接通过修改配置文件就可以了。

猜你喜欢

转载自blog.csdn.net/weixin_44459831/article/details/118456693
今日推荐