单元测试
单元测试概述
针对Java方法的测试
Junit是使用Java语言实现的单元测试框架
单元测试快速入门
需求:使用单元测试进行业务方法预期结果、正确性测试
分析:
1.将JUnit的jar包导入到项目中
2.编写测试方法:该测试方法必须是公共的、无参数、无返回值的非静态方法
3.在测试方法上使用@Test注解:标注该方法是一个测试方法
4.在测试方法中完成被测试方法的预期正确性测试
5.选中测试方法,选择"JUnit运行",如果测试良好则是绿色。如测试失败,则是红色
单元测试常用注解
junit 4.xxxx版本
junit 5.xxxx版本
反射
反射概述
反射是在运行时获取类的字节码文件对象:然后可以解析类中的全部成分
反射关键:
第一步是先得到编译后的class对象,然后就可以得到Class的全部成分
HelloWorld.java -> javac -> helloWorld.class
Class c=HelloWorld.class
反射获取类对象
获取Class类对象的三种方式:
1.Class类的静态方法forName(“全类名”)
2.类名.class
3.对象.getclass()
//方式1 常用
Class c1 = Class.forName("com.itheima.reflect_.Student");
System.out.println(c1);
//方式2
Class c2= Student.class;
System.out.println(c2);
//方式3
Student student = new Student();
Class c3=student.getClass();
System.out.println(c3);
使用反射技术获取构造器对象并使用
前提是需要得到class对象
Class类中获取构造器的方法
方法 | 说明 |
---|---|
Constructor<?>[ ] getConstructors() | 返回所有构造器对象的数组(只获取public) |
Constructor<?>[ ] getDeclaredConstructors() | 返回所有构造器对象的数组,存在能取到 |
Constructor[ ] getConstructor(Class<?>… parametertypes) | 返回单个构造器对象(只获取public) |
Constructor[ ] getDeclaredConstructor(Class<?>… parametertypes) | 返回单个构造器对象,存在能取到 |
获取构造器的作用依然是初始化一个对象返回
Constructor类中用于创建对象的方法
方法 | 说明 |
---|---|
T newInstance(Object… initargs) | 根据指定的构造器创建对象 |
public void setAccessible(boolean flag) | 设置为true,表示取消访问检查,进行暴力反射 |
//1.获取类对象
Class c = Student.class;
//2.定位单个构造器对象
Constructor cons = c.getDeclaredConstructor();
// System.out.println(cons.getName() + "->" + cons.getParameterCount());
//如遇到私有构造器,可以进行暴力反射
//cons.setAccessible(true);
Student student = (Student) cons.newInstance();
System.out.println(student);
//定位2个参数构造器对象
Constructor cons1 = c.getDeclaredConstructor(String.class, int.class);
// System.out.println(cons1.getName() + "->" + cons1.getParameterCount());
Student stude