Java学习(Junit单元测试,反射,注解)

2022/2/23    2/24
一、Junit单元测试
<1>测试的分类:
        1.黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。
        2.白盒测试:需要写代码的。关注程序具体的执行流程。
<2>Junit使用:白盒测试
        1).步骤:
                1.定义一个测试类(测试用例)
                         建议:测试类名:被测试的类名+Test
                                    测试包名:ln.javatest.test
                2.定义测试方法:可以独立运行
                         建议:方法名:test+测试的方法名         testAdd()
                                    返回值:void
                                    参数列表:空参
                3.给方法家@Test
                4.导入junit依赖环境
        2)判定结果:
                1.红色:失败
                2.绿色:成功
                3.一般我们会使用断言操作来处理结果
                        Assert.assertEquals(期望的结果,result)
        3)补充:
                1.@Before:修饰的方法会在测试方法之前被自动执行
                2.@After:修饰的方法会在测试方法执行之后自动被执行

package ln.javatest.day18.demo01;
/*
计算器类
*/

public class Calculator {
    //加法
    public int add(int a,int b){
        return a + b;
    }
    //减法
    public int sub(int a ,int b){
        return a - b;
    }
}
package ln.javatest.day18.demo01;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {
    //初始化方法
    //用于资源申请,所有测试方法再执行之前都会先执行该方法
    @Before
    public void init(){
        System.out.println("init...");
    }

    //释放资源方法
    //在所有测试方法执行完后,都会自动执行该方法
    @After
    public void close(){
        System.out.println("close");
    }

    @Test
    //测试add方法
    public void testAdd(){
        //1.创建计算器对象
        Calculator c = new Calculator();
        //2.调用add方法
        int result = c.add(1,2);
        //System.out.println(result);
        //3.断言 我断言这个结果
        Assert.assertEquals(3,result);
    }

    @Test
    //测试add方法
    public void testSub(){
        //1.创建计算器对象
        Calculator c = new Calculator();
        //2.调用add方法
        int result = c.sub(1,2);
        //System.out.println(result);
        //3.断言 我断言这个结果
        Assert.assertEquals(-1,result);
    }
}

二、反射:框架设计的灵魂
        1)框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
        2)反射:将类的各个组成部分封装为其他对象,这就是反射机制。
                Java代码在计算机中经历的阶段:三个阶段
                        1)源代码阶段(通过类加载器到第二阶段)
                        2)Class类对象阶段(通过创建对象到第三阶段)
                        3)Runtime运行时阶段
                好处:
                        1)可以在程序运行过程中,操作这些对象。
                        2)可以解耦,提高程序的可扩展性。
        3)获取Class对象的方式:
                1)   Class.forName("全类名"):将字节码文件加载进内存,返回Class对象。“
                2)类名.class:通过类名的属性class获取
                3)对象.getClass()方法在Object类中定义着。
                结论:同一个字节码文件(.class)在一次程序运行过程中,只会被加载一次。

package ln.javatest.day18.demo01;

public class Person {
    private String name;
    private  int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package ln.javatest.day18.demo01;

public class ReflectDemo1 {
    /*
    获取Class对象的方式:
        1) Class.forName("全类名"):将字节码文件加载进内存,返回Class对象。
        2)类名.class:通过类名的属性class获取
        3)对象.getClass()方法在Object类中定义着。
    */
    public static void main(String[] args) throws Exception {
        //1) Class.forName("全类名"):将字节码文件加载进内存,返回Class对象。
        Class cls = Class.forName("ln.javatest.day18.demo01.Person");
        System.out.println(cls);
        // 2)类名.class:通过类名的属性class获取
        Class cls1 = Person.class;
        System.out.println(cls1);
        //3)对象.getClass()方法在Object类中定义着。
        Person p = new Person();
        Class cls2 = p.getClass();
        System.out.println(cls2);
        System.out.println(cls1 == cls2 && cls1 == cls); //true
        // 结论:同一个字节码文件(.class)在一次程序运行过程中,只会被加载一次。
    }
}

        4)Class对象的功能
                1)获取成员变量们

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值