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

注解学习,简单测试框架

注解


```java
package domin;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.METHOD})//作用于类
@Retention(RetentionPolicy.RUNTIME)//保留到运行时
public @interface Check {
}

测试框架

package domin;import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.FilterWriter;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;/*** 测试框架,当主方法被执行,就可以执行所有有chect注解的方法,并判断是否有异常,记录到文件中*/
public class TestCheck {public static void main(String[] args) throws IOException {//1、创建测试对象Person preson = new Person();//2、获取字节码对象Class cls = preson.getClass();//3、获取对象的所有方法Method[] methods = cls.getMethods();int number = 0;//出现异常的次数//定义记录文件流对象BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("bug.txt"));//4、遍历所有方法,看是否有@Check注解for(Method method : methods){//5、判断是否有@Check注解if(method.isAnnotationPresent(Check.class)){//6、有,则执行该方法try {method.invoke(preson);} catch (Exception e) {//7、捕获异常//8、记录到文件中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();}
}

被测试类

package domin;public class Person {@Checkpublic void eat(){Integer a = null;a.equals(1);System.out.println("吃饭啦。。。。");}public void drink(){System.out.println("喝水啦。。。。");}@Checkpublic void think(){System.out.println("思考啦。。。。");}@Checkpublic int calcul(){// System.out.println("思考啦。。。。");return 1/0;}
}
http://www.dtcms.com/a/393226.html

相关文章:

  • python 自定义装饰器 + 框架
  • 【星闪】Hi2821 | KEYSCAN矩阵按键扫描
  • ​​[硬件电路-282]:PWM信号通用解读、应用场景及在步进电机中的应用详解
  • 给链表装上“后视镜”:深入理解双向链表的自由与高效
  • Off-Grid Direction of Arrival Estimation Using Sparse Bayesian Inference (II)
  • Unity中的渲染管线
  • PyMuPDF 库
  • 【故障】windows7开机后能出现windows启动界面,但停在黑屏很久才进入系统界面
  • tqdm 库
  • 模块化编程规范与分层设计指南
  • Photoshop - Photoshop 调整照片的颜色强度
  • 【ROS2】通讯机制 Topic 常用命令行
  • DeepSeek的GPU优化秘籍:解锁大规模AI训练的底层效率
  • Gemini in Chrome深度解析:反垄断胜诉后,Chrome开启AI智能浏览时代!
  • 如何修复 Google Chrome 上的白屏问题
  • Camera2原生api级 Demo答
  • 【Redis】Redis缓存与数据库DB数据如何保持同步?
  • 考研408---C语言复习
  • 批量抓取图片
  • WinDivert学习文档之五-————编程API(十一)
  • 【打印菱形】
  • XC7Z100-2FFG900I Xilinx AMD Zynq-7000 FPGA SoC
  • 成本价的SEO优化服务供应链
  • dock生命周期体验-生到死的命令
  • 软件测试方案-模板一
  • 防火墙WEB方式登录配置【HCL模拟】-学习篇(1)
  • Ceph用户管理与cephFS分布式存储实战
  • AgenticSeek:重新定义AI助手的边界 - 100%本地化智能代理系统深度解析
  • 701. 二叉搜索树中的插入操作
  • Spring AI(六)Tool Calling本地回调方法