java 注解 单元测试
什么是注解? 英文是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 注解 单元测试相关推荐
- Java 注解深入理解
内容概要 Annotation的概念 Annotation的作用 Annotation的分类 系统内置注解 元注解 自定义注解 解析注解信息 JDK8注解新特性 附:项目源码地址 一.Annotati ...
- java指导手册,Java 注解指导手册 – 终极向导
编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 现在,是时候汇总这些和注解相关的信息到一篇文章了,祝大家阅读愉快. 目录 什么是注解 介绍 消费器 注解语法和注解元素 ...
- ABAP和Java的单元测试Unit Test
ABAP ABAP class单元测试的执行入口,CLASS_SETUP, 是硬编码在单元测试框架实现CL_AUNIT_TEST_CLASS里的. 待执行的单元测试方法通过CL_AUNIT_TEST_ ...
- Java 注解指导手册 – 终极向导
转载自 Java 注解指导手册 – 终极向导 译文出处: Toien Liu 原文出处:Dani Buiza 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我 ...
- java 注解 属性 类型_收藏!你一定要知道的Java8中的注解
全文共3002字,预计学习时长6分钟 海中有大量的注解! JavaSE 1.5中首次引入了注解.Java注解的目的是允许程序员编写关于其程序的元数据.在OracleDocs中,注解的定义是:" ...
- 聊聊 Java 的单元测试
单元测试框架 Java 中,JUnit 和 TestNG 是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...
- 聊聊Java的单元测试
单元测试框架 Java 中,JUnit 和 TestNG 是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...
- (60)Java基础 --单元测试
目录 一.测试的概念 二.使用Junit4.x进行单元环境 1.环境搭建 2.使用步骤 3.常见注解 三.规范的Junit测试方式 四.断言 1.为什么要使用断言 2.什么是断言(猜测) 3.常用AP ...
- IDEA Java Junit单元测试入门实战
IDEA Java Junit单元测试入门实战 1.下载jar包 2.在IDEA中添加jar包 3.创建单元测试代码 junit的使用: junit不是javase的一部分,想要使用需要导入jar包. ...
最新文章
- 单相计量芯片RN8209D使用经验分享(转)
- 根据数据库表gengxin实体类_ASP.NET开发实战——(十二)数据库之EF Migrations
- django_4:数据库1——django操作数据库
- Oracle conn 协议适配器错误解决
- 推动隐私计算技术,360数科提出分割式神经网络框架
- 纯新手DSP编程--5.29--基于CCS的DSP片级支持库CSL
- Spring Cloud微服务实战:手把手带你整合eurekazuulfeignhystrix(附源码)
- 【算法笔记】最短路-Dijkstra、Floyd、SPFA模版总结+复习
- 电脑字体变成繁体中文怎么更改过来呢
- 直观认识Windows
- Nothing Phone官宣,手机厂新秀靠啥出圈?
- 为什么要申报绿色工厂?
- 普乐蛙VR航天体验|航天vr设备|航空vr设备厂家案例分享
- 解决 Agent JAR loaded but agent failed to initialize
- 宇宙 量子计算机,整个宇宙就是一台巨型量子计算机 俄新研究颠覆宇宙学理论...
- 笔记本计算机忘记密码,win7笔记本电脑密码忘记了怎么办_win7笔记本电脑密码忘了怎么办-win7之家...
- Android 常用色值
- 比勤奋更能决定人生的,是系统思维(构建知识体系)
- 【两周快速入门pr】五、生活化vlog——你第一个vlog小视频(附相机推荐)
- Wireshark中无法显示网卡列表的解决方法