Java基础进阶03-注解和单元测试

目录

一、注解

1.概述

2.作用

3.自定义注解

(1)格式

(2)使用

(3)练习

4.元注解

(1)概述

(2)常见元注解

(3)@Target

(4)@Retention

二、单元测试

1.概述

2.单元测试工具JUnit

3.JUnit特点

4.JUnit的使用

5.JUnit常用注解


一、注解

1.概述

注解是代码里的特殊标记,程序可以读取注解,一般用于替代配置文件

开发人员可以通过注解告诉类如何运行: 在Java技术里注解的典型应用:可以通过反射技术去得到类里面的注解,来决定怎么去运行类

2.作用

  • 标记(如重写@Override)

  • 约束并检查代码是否符合要求(如重写,代码有问题无法实现重写效果的话会报错)

  • 压制警告信息(如@SuppressWarnings(value = "all")【表示压制所有的警告】)

  • 声明(如@Deprecated,表示过时)

3.自定义注解

(1)格式
java 复制代码
  public @interface 注解名称{
      //属性类型:基本数据类型,String,Class,注解,枚举,以上类型的一维数组
      //特殊属性值Value,我们在使用注解的时候,如果我们只给注解的value属性赋值,那么value=可省略
        public 属性类型 属性名() default 默认值
    }
java 复制代码
public @interface text{
    public String[] STRINGS() ;
}
public @interface text02{
    public String[] value();
}
(2)使用
java 复制代码
//直接在要使用的位置上@注解名即可
//注意:在使用注解的时候如果注解里面的属性没有指定默认值,那么我们就需要手动给出注解属性的设置值。
@text(STRINGS = {"1","2","3"})
public static void main(String[] args) {
​
}

@text02({"1","2","3"})
public static void main(String[] args) {
​
}
复制代码
(3)练习

自定义一个注解(@随意),用于指定类的方法上,如果某一个类的方法上使用了该注解,就执行该方法

注解:

java 复制代码
//表示这个注解的存活时间
@Retention(value = RetentionPolicy.RUNTIME)
@interface sign{
    public String value();
}

方法类:

java 复制代码
public class Methods {
    void method01() {
        System.out.println("方法一运行了");
    }
    @sign("true")
    void method02() {
        System.out.println("方法二运行了");
    }
​
    void method03() {
        System.out.println("方法三运行了");
    }
    @sign("true")
    void method04() {
        System.out.println("方法四运行了");
    }
    @sign("true")
    void method05() {
        System.out.println("方法五运行了");
    }
}

测试类:

java 复制代码
public class NoteDemo {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //1.通过反射获取Methods类的字节码文件
        Class<Methods> methodsClass = Methods.class;
        //1.1通过无参构造创建对象
        Methods methods1 = methodsClass.getDeclaredConstructor().newInstance();
        //2.获取所有方法对象
        Method[] methods = methodsClass.getDeclaredMethods();
        //3.遍历方法
        for (Method method : methods) {
            //判断是否有注解,参数是注解的字节码文件
            //isAnnotationPresent(类<? extends Annotation> annotationClass)
            if (method.isAnnotationPresent(sign.class)) {
                method.invoke(methods1);
            }
        }
​
    }
}

4.元注解

(1)概述

描述元注解的注解(写在注解上面的注解)

(2)常见元注解
元注解名 说明
@Target 指定了注解能在哪里使用(成员变量,类,方法)
@Retention 注解保留时间(声明周期)【不写默认是源码阶段】
@Inherited 表示修饰的自定义注解可以被子类继承
@Documented 表示该自定义注解,会出现在API文档里面
(3)@Target
  • 成员变量:
java 复制代码
@Target({ElementType.FIELD})
@interface sign{
    public String value();
}
  • 类:
java 复制代码
@Target({ElementType.TYPE})
@interface sign{
    public String value();
}
  • 方法
java 复制代码
@Target({ElementType.METHOD})
@interface sign{
    public String value();
}

如果是多个参数,用,隔开

(4)@Retention
  • 源码阶段(默认):注释只在java文件中生效,java文件编译变为class文件后,注解会消失
  • 运行时阶段:java文件编译变为class文件后,注解不会消失
java 复制代码
@Retention(value = RetentionPolicy.RUNTIME)
@interface sign{
    public String value();
}

二、单元测试

1.概述

单元测试是对单个代码模块的正确性的测试

2.单元测试工具JUnit

JUnit是一个Java编程语言的单元测试工具。JUnit是一个非常重要的测试工具。

3.JUnit特点

  • JUnit是一个开放源代码的测试工具

  • 提供注解来识别测试方法

  • JUnit测试可以让你编写代码更快,并能提高质量JUnit 优雅简洁。没那么复杂,花费时间较少

  • JUnit 在一个条中显示进度。如果运行良好则是绿色,如果运行失败,则变成红色

4.JUnit的使用

  • 将JUnit的jar包导入到工程中(前面有教程,后续就不讲了)

  • 编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法

  • 在测试方法上使用@Test注解标注该方法是一个测试方法

  • 选中测试方法右键通过junit运行该方法

首先下一个包,我用的是junit-4.13.2

测试一下

报错了,看一下异常信息,少导了一个jar包,去下载一个

问题解决~

5.JUnit常用注解

注解名称 说明
@Test 表示测试该方法
@Before 在测试的方法前运行
@After 在测试的方法后运行
相关推荐
Keep Running *7 分钟前
Spring Cloud Alibaba_学习笔记
笔记·学习
枫叶落雨22211 分钟前
ShardingSphere 介绍
java
花花鱼16 分钟前
Spring Security 与 Spring MVC
java·spring·mvc
我不是懒洋洋38 分钟前
AI的影响6
笔记
言慢行善1 小时前
sqlserver模糊查询问题
java·数据库·sqlserver
专吃海绵宝宝菠萝屋的派大星1 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟1 小时前
操作系统之虚拟内存
java·服务器·网络
Tong Z1 小时前
常见的限流算法和实现原理
java·开发语言
凭君语未可2 小时前
Java 中的实现类是什么
java·开发语言
He少年2 小时前
【基础知识、Skill、Rules和MCP案例介绍】
java·前端·python