什么是注解? 英文是annotation

注解的主要作用:对我们的程序进行标注和解释。

注解名

说明

@Override

描述子类重写父类的方法

@Deprecated

描述方法过时

@SuppressWarnings

压制警告

注解和注释的区别

注释:给程序员看的

注解:给编译器看的(让虚拟机看到程序中的注解,注解代表程序的一些特殊功能)

自定义注解

默认值可以不设置

在使用注解的时候如果注解里面的属性没有指定默认值

那么我们就需要手动给出注解属性的设置值

//特殊属性value 如果我们只设置了value没有默认值,那么在调用注解时,可以省略value字段只给出值value的设置值

代码:

主自定义注解:

public @interface Anno1 {//定义一个基本类型的属性int a() default 23;//定义一个String类型的属性public String name() ;//定义一个class类似的属性public Class clazz() default Anno2.class;//定义一个注解类型的属性public Anno2 anno() default @Anno2;//定义一个枚举类型的属性public Season season() default Season.SPRING;//以上类型的一维数组//int 数组public int[] arr()default {1,2,3,4,5};//枚举数组public Season[] seasons()default {Season.SPRING,Season.SUMMER};//特殊属性value 如果我们只设置了value没有默认值,那么在调用注解时,可以省略value字段}

Anno2:

public @interface Anno2 {
}

枚举类Season:

public enum Season {SPRING,SUMMER,AUTUMN,WINTER;
}

测试类

@Anno1(name = "libai")
public class AnnoTest {}

练习:获取某个类中的所有方法并判断是否有相应注解

注解类:

@Retention(value = RetentionPolicy.RUNTIME)
public @interface Test {
}

方法类:

public class UseTest {@Testpublic void method(){System.out.println("我是method");}public void function(){System.out.println("我是function");}@Testpublic void show(){System.out.println("我是show");}
}

测试类:

public class AnnoTest {public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException {//通过反射获取UseTest类的字节码文件对象Class<?> clazz = Class.forName("com.myAnnotation.UseTest");//创建一个对象UseTest useTest = new UseTest();//通过反射获取类中所有非继承方法对象Method[] methods = clazz.getDeclaredMethods();//遍历获得每一个方法对象for (Method method : methods) {//isAnnotationPresent 判断当前方法上是否有指定的注解//参数为注解的字节码文件对象//返回值:布尔if (method.isAnnotationPresent(Test.class)) {method.invoke(useTest);}}}
}

元注解:描述注解的注解

如:

@Retention(value = RetentionPolicy.RUNTIME)

public @interface Test { }

元注解名

说明

@Target

指定了注解能在哪里使用

@Retention

可以理解为保留时间(生命周期)

@Inherited

表示修饰的自定义注解可以被子类继承

@Documented

表示该自定义注解,会出现在API文档里面。

@Target ({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD})  指定注解在哪使用  分别为 变量, 类, 方法

@Retention()  如果不写 表示这个注解只能存活在源码阶段

随意要设置  @Retention(RetentionPolicy.RUNTIME) //让注解活到字节码运行阶段

@Inherited  直接写,就代表这个注解可以被继承

单元测试

以前的测试方式:

我们都是将代码全部写完才进行测试。这样其实不是很好

在以后工作的是后,都是写完一部分代码就测试一部分。这样,带码中的问题可以得到及时修复

也避免了,由于代码过多,从而无法准确定位到错误的代码

Junit概述

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

提供注解来识别测试方法

JUnit测试可以让你编写代码更快并能提高质量

JUnit优雅简介没那么复杂,花费时间较少

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

Junit使用的基本流程

将JUnit的jar包导入到工程中

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

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

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

单元测试的三个常用注解 before,test,after.flv

java 注解 单元测试相关推荐

  1. Java 注解深入理解

    内容概要 Annotation的概念 Annotation的作用 Annotation的分类 系统内置注解 元注解 自定义注解 解析注解信息 JDK8注解新特性 附:项目源码地址 一.Annotati ...

  2. java指导手册,Java 注解指导手册 – 终极向导

    编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 现在,是时候汇总这些和注解相关的信息到一篇文章了,祝大家阅读愉快. 目录 什么是注解 介绍 消费器 注解语法和注解元素 ...

  3. ABAP和Java的单元测试Unit Test

    ABAP ABAP class单元测试的执行入口,CLASS_SETUP, 是硬编码在单元测试框架实现CL_AUNIT_TEST_CLASS里的. 待执行的单元测试方法通过CL_AUNIT_TEST_ ...

  4. Java 注解指导手册 – 终极向导

    转载自  Java 注解指导手册 – 终极向导 译文出处: Toien Liu   原文出处:Dani Buiza 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我 ...

  5. java 注解 属性 类型_收藏!你一定要知道的Java8中的注解

    全文共3002字,预计学习时长6分钟 海中有大量的注解! JavaSE 1.5中首次引入了注解.Java注解的目的是允许程序员编写关于其程序的元数据.在OracleDocs中,注解的定义是:" ...

  6. 聊聊 Java 的单元测试

    单元测试框架 Java​ 中,​JUnit ​和 ​TestNG ​是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...

  7. 聊聊Java的单元测试

    单元测试框架 Java​ 中,​JUnit ​和 ​TestNG ​是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...

  8. (60)Java基础 --单元测试

    目录 一.测试的概念 二.使用Junit4.x进行单元环境 1.环境搭建 2.使用步骤 3.常见注解 三.规范的Junit测试方式 四.断言 1.为什么要使用断言 2.什么是断言(猜测) 3.常用AP ...

  9. IDEA Java Junit单元测试入门实战

    IDEA Java Junit单元测试入门实战 1.下载jar包 2.在IDEA中添加jar包 3.创建单元测试代码 junit的使用: junit不是javase的一部分,想要使用需要导入jar包. ...

最新文章

  1. 英特尔新任 CEO 的“开挂”人生
  2. NatApp 内网穿透工具简单使用介绍说明
  3. js string转number_【虚拟机系列】JS虚拟机——实现setTimeout
  4. Python接口自动化之接口依赖
  5. 读写文件RandomAccessFile
  6. NoSQL 已死:我们不需要他了
  7. linux调度器(四)——主调度器与CFS
  8. 编译WINDOWS版FFmpeg:编译FFmpeg
  9. JDK 和 JRE 有什么区别?
  10. 计算机表格布局,使用表格布局网页
  11. eclipse如何配置Maven
  12. Unity3D开发游戏坦克大战
  13. Qt实战案例(54)——利用QPixmap设计图片透明度
  14. 【Python军火库】smtplib+email:一起来用Python发送电子邮件吧!
  15. wishbone bus
  16. SpringBoot 2 访问 Neo4j 图数据库
  17. 阿里云短视频SDK for iOS —— (二)静态与动态贴纸拍摄
  18. 乱拔插U盘,导致U盘变成RAW未初始化格式,容量大小为0。
  19. “越努力越幸运”练习作品
  20. 《天引》读书笔记——由新月形面积引发的人类长达2000年的探索。

热门文章

  1. 5个超实用的Visual Studio插件
  2. ant-design-vue+vite主题切换详细步骤(简单案例)
  3. 可能是全网最全的移动直播 trouble shooting 手册(7)——黑屏、花屏、闪屏
  4. 分区分服和全区全服的对比
  5. 多变量分析”——数据挖掘、数据分析
  6. 机载雷达导论(第15~17章)
  7. Android 更换字体和改变字重
  8. nohup挂起运行时无效
  9. 使用stress对服务器进行压力测试
  10. 区块链在企业管理中的应用