目录

一、需求

Calculator类:

Check注解:

TestCheck类:

二、运行结果

控制台:

记录异常的文件(bug.txt):

三、结论


一、需求

需求:当主方法执行后,会自动执行被检测的所有方法(加了Check注解的方法),判断方法是否有异常,记录到文件中

Calculator类:

import demo.Check;/*小明定义的计算机类*/
public class Calculator {//加法@Checkpublic void add() {String str = null;str.toString();System.out.println("1 + 0 =" + (1 + 0));}//减法@Checkpublic void sub() {System.out.println("1 - 0 =" + (1 - 0));}//乘法@Checkpublic void mul() {System.out.println("1 * 0 =" + (1 * 0));}//除法@Checkpublic void div() {System.out.println("1 / 0 =" + (1 / 0));}public void show() {System.out.println("永无bug...");}
}

Check注解:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Check {
}

TestCheck类:

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

二、运行结果

控制台:

记录异常的文件(bug.txt):

三、结论

1、大多数的时候是使用注解,而不是自定义注解

2、注解给谁用,编译器和解析给程序用

3、注解不是程序的一部分,可以理解为注解就是一个标签

Java注解案例-简单测试框架相关推荐

  1. 【Java 注解】自定义注解 ( 使用注解实现简单测试框架 )

    文章目录 一.定义注解 二.使用注解 三.解析注解 在 [Java 注解]自定义注解 ( 注解属性定义与赋值 ) 博客中讲解了 注解属性 ; 在 [Java 注解]自定义注解 ( 元注解 ) 博客中讲 ...

  2. ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...

    1:基于注解的简单MVC框架的实现 效果:1:用户只需要定义一些普通的java类来做为M层,也就是STRUTS的action类,该类里包含1到 N个控制方法,每个方法需要的form数据,由注解@Act ...

  3. 自动化测试--实现一套完全解耦的简单测试框架

    selenium中有提供pageObject,支持将页面元素和动作单独封装到一个类中. 但是,当页面元素发生变化的时候(在项目的维护过程中,很很容易发生的),就需要去修改源代码.为了解决这个问题,可以 ...

  4. 走进Java接口测试大门之测试框架TestNG

    一.简介 TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,旨在简化广泛的测试需求,从单元测试到接口测试. 但引入了一些新功能,使其更强大,更易于使用,例如: 注释. 在线程池中运行 ...

  5. Mockito:一个强大的用于Java开发的模拟测试框架

    介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用Mockito的Java示例. 模拟(Mock)的概念 在软件开发的世界之外, "mock"一 ...

  6. Java运用注解反射编写简单测试框架

    测试一个计算器类,把异常类型次数其他异常信息自动生成BUG文件 /*** 计算器类*/ public class Calculator {//加法@Checkpublic void add(){Sys ...

  7. java 注解妙用_框架开发之Java注解的妙用

    PS:如果你还不会使用注解,你肯定不好意思对别人说你学过Spring,你学过Mybatis,因为它们用了大量的注解.可见注解在开发领域已经使用的非常广泛了. 配图.jpg 注解的好处: 1.能够读懂别 ...

  8. java 封装优化工具_利用Java注解的简单封装的一次优化

    悟红尘:​zhuanlan.zhihu.com 在我们的项目中和后台的通信的时候,为了防止别人截获并篡改信息,于是决定启用一套自己验签规则,那就是将所有属性的值拼接起来进行SHA256签名,在这个字符 ...

  9. 自动化测试--实现一套完全解耦的简单测试框架(二)

    一:每次运行都需要打开代码工具,如eclipse或者IDE等.为了后面的持续集成,直接使用Maven命令去运行自动化测试,需要引入surfire插件.笔者使用的是2.10版本Surefire和6.9. ...

最新文章

  1. 中国7位学者当选!又一院士名单公布
  2. PAT甲级1023 Have Fun with Numbers:[C++题解]高精度加法和两个vector大小比较
  3. sdutoj-4209-移动小球
  4. 直接拿来用!VS Code 最强插件指南
  5. 单片机发送数据到mysql_单片机的数据怎样进入到sql server的数据库中
  6. 使用 ML.NET 实现峰值检测来排查异常
  7. Hexo+GitHub 快速搭建个人博客(二)---- 域名解析
  8. 计算机图形学(一) 视频显示设备_3_随机扫描显示器
  9. pythonsparkfilter_python中的map、filter、reduce函数
  10. opencv二值化代码实现
  11. 神经网络入门(详细 )
  12. android icon颜色转换工具,Android代码修改图标颜色
  13. 电脑PC微信头像和图片不能显示出来?
  14. 【Docker】安装-win7
  15. xp系统蓝屏代码7b_电脑开机蓝屏错误代码0x0000007B的详细解决过程
  16. docker容器获取宿主ip地址
  17. PowerBi - 建模与关系函数
  18. 华为鸿蒙手机充电期间系统将进行深度优化
  19. 分治法实现寻找数组最大最小值
  20. 软件体系结构KWIC索引结构

热门文章

  1. 【程序员讲装修】如何花最少的钱做出最出彩的装修效果?
  2. 更改 elementui el-table 表头默认颜色
  3. 计算机科学与技术的职业需求,职业规划:计算机科学与技术专业就业前景
  4. 40. 实战:基于tkinter实现用户UI界面——对34小节的VIP音乐解析系统的全面升级(附源码)
  5. proc wifi 开启_一步一步教你解锁newifi3(新路由3)并编译刷入最新官方OpenWrt
  6. ajax脚本下载_E4X的AJAX和脚本Web服务,第1部分
  7. SQL注入零基础实战
  8. 工程伦理第十三章习题答案
  9. 霍夫变换概论(浅显易懂)
  10. c++ libwebsocket库应用开发2