目录
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 //获取方法名
小结
通过配置文件来调用包中类的代码,获取包中的变量和方法,不用在去动自己的源代码,直接通过修改配置文件就可以了。