当前位置: 首页 > news >正文

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

(3)练习

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

注解:

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

方法类:

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("方法五运行了");}
}

测试类:

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
  • 成员变量:

@Target({ElementType.FIELD})
@interface sign{public String value();
}
  • 类:

@Target({ElementType.TYPE})
@interface sign{public String value();
}
  • 方法

@Target({ElementType.METHOD})
@interface sign{public String value();
}

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

(4)@Retention
  • 源码阶段(默认):注释只在java文件中生效,java文件编译变为class文件后,注解会消失

  • 运行时阶段:java文件编译变为class文件后,注解不会消失

@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在测试的方法后运行
http://www.lryc.cn/news/288432.html

相关文章:

  • Mac+Android Studio配置 Flutter环境
  • 架构整洁之道-设计原则
  • 数据结构(队列)
  • docker容器启动后修改或添加端口 nacos容器 版本2.x需要额外开放9848、9849
  • C语言实现归并排序算法(附带源代码)
  • 考研C语言刷题基础篇之分支循环结构基础(二)
  • Scala基础知识
  • 数学建模-------误差来源以及误差分析
  • Arduino和MPLAB X 开发STM32F103和PIC16F15376
  • 手机操作系统Android
  • 2024年,你是否还在迷茫?
  • ART: Automatic multi-step reasoning and tool-use for large language models 导读
  • Github 2024-01-26 开源项目日报Top10
  • 免费的 UI 设计资源网站 Top 8
  • 人机协同对人工智能治理的影响
  • Form.List的使用,设置某个字段的值
  • React16源码: React中的updateHostComponent的源码实现
  • uniapp导入uView组件库
  • 防御保护----防火墙的安全策略、NAT策略实验
  • # 安徽锐锋科技IDMS系统简介
  • Notepad在文件中查找多行相同内容的文字
  • Python高超音速导弹
  • Java七大排序详解
  • 图像旋转角度计算并旋转
  • 通过curl访问k8s集群获取证书或token的方式
  • 苍穹外卖-前端部分(持续更新中)
  • windows用mingw(g++)编译opencv,opencv_contrib,并install安装
  • JDWP 协议及实现
  • 利用ADS建立MIPI D-PHY链路仿真流程
  • 【大根堆】【C++算法】871 最低加油次数