/*
* 注解类
* */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Demo04Check {
}

  

/**要执行的小明定义的计算器类
* @author :cza
* @date :2020/3/10 16:56
* @description :
* @modyified By:
*/
public class Demo04Calculator {
//加法
@Demo04Check
public void add(){
System.out.println("1 + 0 = "+(1+0));
}
//减法
@Demo04Check
public void sub(){
System.out.println("1 - 0 = "+(1 - 0));
}
//乘法
@Demo04Check
public void mul(){
System.out.println("1 * 0 = "+(1 * 0));
}
//除法
@Demo04Check
public void div(){
System.out.println("1 /0 = "+(1/ 0));
}
@Demo04Check
public void show(){
System.out.println("永无bug...");
}
}

  

/**
* 简单的测试框架
* 当主方法执行后,会自动自行被检测的所有方法(加上Demo04Check注解的方法),判断方法是否有异常,记录到文件中
* @author :cza
* @date :2020/3/10 17:00
* @description :
* @modyified By:
*/
public class Demo4TestCheck {
public static void main(String[] args) throws IOException {
//1、创建计算器对象
Demo04Calculator c=new Demo04Calculator();
//2.获取字节码文件对象
Class cls = c.getClass();
//3.获取所有方法
Method[] methods=cls.getMethods();
int number=0; //出现异常的次数
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("check04bug.txt"));
for (Method method: methods
) {
//4.判断方法上是否有Check注解
if(method.isAnnotationPresent(Demo04Check.class)){
//5、有执行
try {
method.invoke(c);
} catch (Exception e) {
//6.捕获异常
number++;
bufferedWriter.write(method.getName()+"方法出现异常了");
bufferedWriter.newLine();
bufferedWriter.write("异常的名称:"+e.getCause().getClass().getSimpleName());
bufferedWriter.newLine();
bufferedWriter.write("异常的原因:"+e.getCause().getMessage());
bufferedWriter.newLine();
bufferedWriter.write("------------------------------");
bufferedWriter.newLine();
}
}
} bufferedWriter.write("本次测试一共出现"+number+"次异常");
bufferedWriter.flush();
bufferedWriter.close(); }
}

  

java自定义注解实现执行所有要测试的接口的更多相关文章

  1. java自定义注解知识实例及SSH框架下,拦截器中无法获得java注解属性值的问题

    一.java自定义注解相关知识 注解这东西是java语言本身就带有的功能特点,于struts,hibernate,spring这三个框架无关.使用得当特别方便.基于注解的xml文件配置方式也受到人们的 ...

  2. Java自定义注解和运行时靠反射获取注解

    转载:http://blog.csdn.net/bao19901210/article/details/17201173/ java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编 ...

  3. java自定义注解类

    一.前言 今天阅读帆哥代码的时候,看到了之前没有见过的新东西, 比如java自定义注解类,如何获取注解,如何反射内部类,this$0是什么意思? 于是乎,学习并整理了一下. 二.代码示例 import ...

  4. java自定义注解实现前后台参数校验

    2016.07.26 qq:992591601,欢迎交流 首先介绍些基本概念: Annotations(also known as metadata)provide a formalized way ...

  5. java自定义注解注解方法、类、属性等等【转】

    http://anole1982.iteye.com/blog/1450421 http://www.open-open.com/doc/view/51fe76de67214563b20b385320 ...

  6. Java自定义注解的实现

    Java自定义注解的实现,总共三步(eg.@RandomlyThrowsException): 1.首先编写一个自定义注解@RandomlyThrowsException package com.gi ...

  7. Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)

    Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性) 前言:由于前段时间忙于写接口,在接口中需要做很多的参数校验,本着简洁.高效的原则,便写了这个小工具供自己使用(内容 ...

  8. JAVA自定义注解 ------ Annotation

    日常开发工作中,合理的使用注解,可以简化代码编写以及使代码结构更加简单,下面记录下,JAVA自定义注解的开发过程. 定义注解声明类. 编写注解处理器(主要起作用部分). 使用注解. 相关知识点介绍, ...

  9. Java 自定义注解

    在spring的应用中,经常使用注解进行开发,这样有利于加快开发的速度. 介绍一下自定义注解: 首先,自定义注解要新建一个@interface,这个是一个注解的接口,在此接口上有这样几个注解: @Do ...

随机推荐

  1. .NET MAUI RC2 发布,支持 Tizen 平台

    在.NET多平台应用程序UI(.NET MAUI)RC1之后仅两周,微软已经发布了RC2,并以新的Tizen支持为亮点..NET MAUI是微软对Xamarin.Forms的演变,因为它除了iOS和A ...

  2. 请收藏,Linux 运维必备的 40 个命令总结,收好了~

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 1.删除0字节文件 find -type f -size ...

  3. .NET混合开发解决方案9 WebView2控件的导航事件

    系列目录     [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...

  4. app嵌套页

    Wdatepicker

  5. deepin安装jdk配置环境

    下载一个jdk压缩包https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.tar.gz 这个包,不用安装,下下来,直接解压,然 ...

  6. 1┃音视频直播系统之浏览器中通过WebRTC访问摄像头

    一.WebRTC的由来 对于前端开发小伙伴而言,如果用 JavaScript 做音视频处理 在以前是不可想象的,因为首先就要考虑浏览器的性能是否跟得上音视频的采集 但是 Google 作为国际顶尖科技 ...

  7. Mac 手动安装 bee工具

    前因: 1.go升级到1.16以后,bee官网给的安装方法(go get XXX)不好使,需要指定version. 2.指定 go get XXX@v2.0.0 可以下载,但是bee工具还是用不了:c ...

  8. 将MySQL查询结果导出到Excel

    总结将mysql的查询结果导出到文件的方法 总结 使用命令 select user, host, password from mysql.user into outfile '/tmp/user.xl ...

  9. arts-week10

    Algorithm 905. Sort Array By Parity - LeetCode Review Who's Afraid of the Big Bad Preloader? 一文读懂前端缓 ...

  10. freeswitch使用mod_shout模块播放mp3

    概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件. 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件. ...