黑马就业班(01.JavaSE Java语言基础-11.Java基础加强)——基础加强:Junit单元测试、反射、注解

本文介绍了Java基础加强部分,包括Junit单元测试的步骤和使用,反射的概念及Class对象的功能,如Field、Constructor和Method。此外,详细讲解了注解的作用分类,如编写文档、代码分析和编译检查,并展示了如何通过javadoc生成API文档,解决乱码问题。最后,探讨了元注解和在程序中解析、使用注解的方法,以及通过自定义注解实现测试框架的案例。
摘要由CSDN通过智能技术生成

  
1、Junit单元测试

  • 测试分类:
    1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。
    2. 白盒测试:需要写代码的。关注程序具体的执行流程。
    在这里插入图片描述

  • Junit使用:白盒测试
    步骤:
      1. 定义一个测试类(测试用例)

建议:
	 测试类名:被测试的类名Test	——CalculatorTest
	包名:xxx.xxx.xx.test——cn.itcast.test

  2. 定义测试方法:可以独立运行

 建议:
		方法名:test测试的方法名——testAdd()  
		返回值:void
		参数列表:空参

  3. 给方法加@Test (这个注解可以使得方法不需要在main方法中,而可以独立运行)
  4. 导入junit依赖环境

 判定结果:
			红色:失败
			绿色:成功
			一般我们会使用断言操作来处理结果
			Assert.assertEquals(期望的结果,运算的结果);
补充:
		@Before:
				修饰的方法会在测试方法之前被自动执行
		@After:
				修饰的方法会在测试方法执行之后自动被执行

  用普通方法测试

--------------被测类Calculator
/**
 * 计算机类
 */
public class Calculator
{
   
    /**
     * 加法
     * @param a
     * @param b
     * @return
     */
    public int add (int a , int b)
    {
   
        return a + b;
    }

    /**
     * 减法
     * @param a
     * @param b
     * @return
     */
    public int sub (int a , int b)
    {
   
        return a - b;
    }
}
-------------测试类CalculatorTest
package lkj.demo1;

public class CalculatorTest
{
   
    public static void main(String[] args)
    {
   
        Calculator c = new Calculator();

//        int result = c.add(1,2);
//        System.out.println(result);

        int result = c.sub(1, 1);
        System.out.println(result);

        /*
        以上的测试方法是我们以前的方法,该方法由几个缺点

        1、我们测试完一个方法,如果想要测试另一个方法,我们还要将一个方法注释;
        2、测试代码与原来的代码放在一起,不方便统一管理;
        3、一个类里面只能写一个main方法用于测试
        ....
        很不方便
         */
    }
}

  用Junit方法测试

------------我们在src包下面再创建一个test包用于保存测试类(规范)
package test;

import lkj.demo1.Calculator;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class CalculatorTest
{
   
    /**
     * 测试add方法
     */
    @Test
    //注意,加这个注解是为了使得方法不依赖于main方法,方法可以独立运行
    //另外,为了使得方法可以运行,我们需要手动注入依赖,既“Add 'Junit4' to classpath”
    //想要使得这个测试方法单独运行,可以点击左边的运行按钮(当然,直接按照以前的方法运行也可以,前提是当前只有一个测试类)
    public void testAdd()
    {
   
//        System.out.println("我被执行了");

        //1.创建计算器对象
        System.out.println("testAdd...");
        //由于Calculator与我们的测试类不在同一个包下,我们这里需要手动导入Calculator类
        Calculator c  = new Calculator();
        //2.调用add方法
        int result = c.add(1, 2);
//        System.out.println(result);

        /*
        我们使用Junit测试是不看输出的,因为输出很难看出正确与否
        我们一般都是看运行结果是红色还是绿色,红色代表测试结果错误,绿色代表测试结果正确
        一般我们会使用断言操作来处理结果
			Assert.assertEquals(期望的结果,运算的结果);
        */
        //如果方法的功能写错,都是代码本身是正确的,这样测试也会通过,输出并不能得到我们想要的结论
        //因此我们使用断言Assert.assertEquals(期望的结果,运算的结果);
        Assert.assertEquals(3,result);
        //如果功能写错,发现测试结果与期望值不相同,结果就会是红色的;如果正确就会返回绿色
    }

    /**
     * 减法测试
     */
    @Test
    public void testSub()
    {
   
        System.out.println("testSub...");
        Calculator c  = new Calculator();
        int result = c.sub(3, 2);
        Assert.assertEquals(1,result);
    }

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

    /**
     * 释放资源方法:
     *  在所有测试方法执行完后,都会自动执行该方法
     */
    @After
    public void close(){
   
        System.out.println("close...");
    }
    //不管有没有发送异常,都会执行Before与After
}

2、反射补充
  反射——框架设计的灵魂(这一部分主要看视频的解析)

	框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
	反射:将类的各个组成部分封装为其他对象,这就是反射机制
	 好处:
		1. 可以在程序运行过程中,操作这些对象。(12.25解析)
		2. 可以解耦,提高程序的可扩展性。

在这里插入图片描述


  获取Class对象的方式:

1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
			多用于配置文件,将类名定义在配置文件中。读取文件,加载类
2. 类名.class:通过类名的属性class获取
			多用于参数的传递
3. 对象.getClass():getClass()方法在Object类中定义着。
			多用于对象的获取字节码的方式

 结论:同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个。

  Class对象功能:

获取功能&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值