Junit单元测试:
* 测试分类:
1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。
2. 白盒测试:需要写代码的。关注程序具体的执行流程。
Junit使用:白盒测试
定义测试方法:可以独立运行
* 方法名:test测试的方法名 testAdd()
* 返回值:void
* 参数列表:空参
3. 给方法加@Test
4. 导入junit依赖环境:alt+回车
package cn.itcast.junit.test;
import cn.itcast.junit.Calculator;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class CalcultorTest {
@Before
public void init(){
System.out.println("init....");
}
@After
public void close(){
System.out.println("close....");
}
@Test
public void testAdd(){
Calculator c=new Calculator();
int result=c.add(1,2);
//断言
Assert.assertEquals(3,result);
}
}
-
判定结果:
* 红色:失败
* 绿色:成功
* 一般我们会使用断言操作来处理结果
* Assert.assertEquals(期望的结果,运算的结果);* 补充: * @Before: * 修饰的方法会在测试方法之前被自动执行 * @After: * 修饰的方法会在测试方法执行之后自动被执行
反射:框架设计的灵魂
* 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
* 反射:将类的各个组成部分封装为其他对象,这就是反射机制
* 好处:
1. 可以在程序运行过程中,操作这些对象。
2. 可以解耦,提高程序的可扩展性。
* 获取Class对象的方式:
1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
* 多用于配置文件,将类名定义在配置文件中。读取文件,加载类
2. 类名.class:通过类名的属性class获取
* 多用于参数的传递
3. 对象.getClass():getClass()方法在Object类中定义着。
* 多用于对象的获取字节码的方式
* 结论:
同一个字节码文件(*.class)在一次程序运行过程中,
只会被加载一次,不论通过哪一种方式获取
的Class对象都是同一个。
package cn.itcast.junit.reflect;
import cn.itcast.junit.domain.Person;
import cn.itcast.junit.domain.Student;
public class ReflectDemo01 {
public static void main(String[] args) throws Exception {
//1.Class.forName("全类名")
Class cls1 = Class.forName("cn.itcast.junit.domain.Person");
System.out.println(cls1);
//2.类名.class
Class cls2 = Person.class;
System.out.println(cls2);
//3.对象.getClass()
Person p=new Person();
Class cls3 = p.getClass();
System.out.println(cls3);
Class stu = Student.class;
System.out.println(stu);
}
}
* Class对象功能: * 获取功能:
- 获取成员变量们
- Field[] getFields() :获取所有public修饰的成员变量
- Field getField(String name) 获取指定名称的 public修饰的成员变量
- Field[] getDeclaredFields() 获取所有的成员变量,不考虑修饰符
- Field getDeclaredField(String name)
package cn.itcast.junit.reflect;
import cn.itcast.junit.domain.Person;
import java.lang.reflect.Field;
public class ReflectDemo02 {
public static void main(String[] args) throws Exception {
Class personClass = Person.class;
//Field[] getFields() :获取所有public修饰的成员变量
Field[] fields=personClass.getFields();
for (Field field : fields) {
System.out.println(field);
}
System.out