内容目录
java
JUnit单元测试
单元测试概述
单元测试就是针对最小的功能单元编写测试代码,Java 程序最小的功能单元是方法,因此,单元测试就是针对 Java 方法的测试,进而检查方法的正确性。
Junit 单元测试框架
JUnit 是使用 Java 语言实现的单元测试框架,它是开源的,Java 开发者都应当学习并使用 JUnit 编写单元测试。
此外,几乎所有的 IDE 工具都集成了 JUnit,这样我们就可以直接在 IDE 中编写并运行 JUnit 测试,JUnit 目前最新版本是 5。
JUnit 优点
- JUnit 可以灵活的选择执行哪些测试方法,可以一键执行全部测试方法。
- Junit 可以生成全部方法的测试报告。
- 单元测试中的某个方法测试失败了,不会影响其他测试方法的测试。
单元测试使用
- 将 JUnit 的 jar 包导入到项目中
- IDEA 通常整合好了 Junit 框架,一般不需要导入。如果 IDEA 没有整合好,需要自己手工导入如下 2 个 JUnit 的 jar 包到模块
- 编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法。
- 在测试方法上使用@Test 注解:标注该方法是一个测试方法
- 在测试方法中完成被测试方法的预期正确性测试。
- 选中测试方法,选择"JUnit 运行" ,如果测试良好则是绿色;如果测试失败,则是红色
注意事项:定义的测试方法必须是无参数无返回值,且公开的方法。
单元测试常用注解
开始执行的方法:初始化资源。执行完之后的方法:释放资源。
注解 | 说明 |
---|---|
@Test | 测试方法 |
@Before | 用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。 |
@After | 用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。 |
@BeforeClass | 用来静态修饰方法,该方法会在所有测试方法之前只执行一次。 |
@AfterClass | 用来静态修饰方法,该方法会在所有测试方法之后只执行一次。 |
Junit 5.xxxx 版本
开始执行的方法:初始化资源。执行完之后的方法:释放资源。
注解 | 说明 |
---|---|
@Test | 测试方法 |
@BeforeEach | 用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。 |
@AfterEach | 用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。 |
@BeforeAll | 用来静态修饰方法,该方法会在所有测试方法之前只执行一次。 |
@AfterAll | 用来静态修饰方法,该方法会在所有测试方法之后只执行一次。 |
反射
反射概述
反射的关键:
反射的第一步都是先得到编译后的Class类对象,然后就可以得到Class的全部成分。
HelloWorld.java -> javac -> HelloWorld.class
Class c = HelloWorld.class;
反射的作用和关键
- 反射是在运行时获取类的字节码文件对象:然后可以解析类中的全部成分。
- 反射的核心思想和关键就是: 得到编译以后的 class 文件对象。
反射获取类对象
获取 Class 类的对象的三种方式
- 方式一:Class c1 = Class.forName("全类名");
- 方式二:Class c2 = 类名.class
- 方式三:Class c3 = 对象.getClass();
反射获取构造器对象
- 第一步:获取 class 对象
- 第二步:获得 Constructor 对象
- 第三步:创建对象
反射的第一步是先得到类对象,然后从类对象中获取类的成分对象。
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,表示取消访问检查,进行暴力反射 |