A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dyynrahbsqt 中级黑马   /  2018-12-2 16:56  /  638 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

day14-JUnit-反射-注解
测试分类:
        1. 黑盒测试:不需要写代码, 给输入值, 看程序是否能够输出期望的值
                比如你下载一个APP, 随便点点点, APP闪退了
        2. 白盒测试:需要写代码的. 关注程序具体的执行流程
                比如今天学习的JUnit
JUnit使用步骤:
        1. 定义一个测试类(也叫测试用例)
            包名:xxx.xxx.xx.test
                被测试的类名:   Calculator   
                对应的测试类名: CalculatorTest
        2. 定义测试方法:可以独立运行
                被测试的方法名:       add()      
        对应的测试方法名: testAdd()  
                    建议测试方法的返回值是void, 参数列表是空参
        3. 在方法上加 @Test 注解
        4. @Test 注解上按 Alt+Enter, 选择 "Add 'JUnit4' to Classpath" 导入JUnit依赖环境
        5. 在方法名上右键, 选择 "Run '方法名()'"
            
判定结果:
        红色:失败
        绿色:成功.(测试通过)
判定结果:
        红色:失败
        绿色:成功.(测试通过)
       
断言: Assert
        使用断言操作来判断结果是否符合预期:
                Assert.assertEquals(期望的结果, 运算的结果);
                如果 期望的结果 运算的结果 相等, 则认为测试通过, 否则测试失败
Before: 修饰的方法会"在每个测试方法执行 之前"被执行
@After:  修饰的方法会"在每个测试方法执行 之后"被执行
反射: 将类的各个组成部分, 封装为其他对象, 这就是反射机制
        成员变量(字段): Field类的对象
        构造方法: Constructor类的对象
        成员方法: Method类的对象
        好处:
                1. 可以在程序运行过程中, 操作这些对象
                2. 可以解耦, 提高程序的可扩展性
Java代码在计算机中的3个阶段:
        SOURCE: 源代码阶段
        CLASS: 类对象阶段
        RUNTIME: 运行时阶段
获取一个类的字节码对象的3种方式:
        1. Class.forName("全类名")
                将字节码文件加载进内存,返回Class对象
                适用场景: 多用于配置文件,将类名定义在配置文件中. 读取文件, 加载类
        2. 类名.class                         .
                通过类名的属性class获取
                适用场景: 多用于参数的传递  getConstructor(String.class, int.class)
        3. 对象.getClass()
                getClass()方法在Object类中定义
                适用场景: 多用于对象的获取字节码的方式 p.getClass()
               
同一个类的字节码对象, 只有"唯一的一个"
注解: 说明程序的。给计算机看的
注释: 用文字描述程序的。给程序员看的
JDK中预定义的一些注解:
        @Override: 检测被该注解标注的方法是否是"重写"父类(接口)
        @Deprecated: 该注解标注的内容,表示已过时
        @SuppressWarnings: 压制警告. 一般传递参数all  @SuppressWarnings("all")
属性:
        接口中的"抽象方法"
   
属性的要求:
    1. 属性的"返回值类型"可以是以下类型:
        基本数据类型(8)
        String
        枚举
        注解
        以上类型的数组
    2. 定义了属性,在使用注解时, 需要"给属性赋值" (其实是抽象方法的返回值)
        1. 属性使用 default 关键字指定默认值, 则可以不赋值
        2. 如果只有一个名为"value"的属性需要赋值, value 可以省略, 直接写值即可
        3. 给数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略
元注解:
        用于描述注解的注解
       
常用元注解:
        @Target: 描述注解能够作用的位置
                ElementType枚举的常用取值:
                        TYPE:可以作用于类上
                        METHOD:可以作用于方法上
                        FIELD:可以作用于成员变量上
                示例: @Target(value = {ElementType.TYPE, ElementType.METHOD})
        @Retention: 描述注解被保留的阶段
                RetentionPolicy枚举的取值:
                        SOURCE: 保留到源代码阶段
                        CLASS: 保留到类对象阶段
                        RUNTIME: 保留到运行时阶段
                示例: @Retention(RetentionPolicy.RUNTIME):保留注解到class字节码文件中并被JVM读取到
        @Documented: 加上后, 当前注解会被抽取到api文档中
        @Inherited: 加上后, 当前注解会被子类继承

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马