注解案例--简单的测试框架

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 注解案例--简单的测试框架


目录

 

一、自定义注解

1.自定义注解源代码

2.元注解

二、定义实用类

1.实用类源代码

三、解析注解

1.解析步骤

2.解析注解源代码

3.测试结果:

四、注解小结


 

一、自定义注解

1.自定义注解源代码

package cn.test;
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 {
}

2.元注解

自定义注解@Check

在自定义中用到了

@Retention(RetentionPolicy.RUNTIME)  该注解是表示用到该注解的注解的作用阶段    

样例注解是:   是保存到字节码文件且被JVM读取到。

@Target({ElementType.METHOD})      该注解是表示用到该注解的注解的作用类型

样例注解是:    是表面该注解的注解是作用在方法上的。

二、定义实用类

1.实用类源代码

package cn;
import cn.test.Check;
public class Calculator {
    @Check
    public void add()
    {
        System.out.println("1+0="+(1+0));
    }
    @Check
    public void sub()
    {
        System.out.println("1-0="+(1-0));
    }
    @Check
public void mul(){
    System.out.println("1*0="+(0*1));
}
@Check
public void div()
{
    System.out.println("1/0="+(1/0));
}
public void show()
{
    System.out.println("无bug.........");
}
}

给加减乘除四个方法加上了@Check注解(进行编译检查)

三、解析注解

1.解析步骤

       (1)

       创建对象

Calculator c=new Calculator();


       (2)

       获取字节码文件对象

Class<? extends Calculator> aClass = c.getClass();

       (3)

       获取所有方法

Method[] methods = aClass.getMethods();

       (4)

               判断方法上是否有Check注解

               要判断  肯定要遍历

                       定义变量  --出现次数

                       定义IO流   把异常写入文档

2.解析注解源代码

package cn.test;
import cn.Calculator;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Method;
/*
 *简单的测试框架
 *    解析注解
 * 当主方法执行后 会自动自行被检测的所有方法(加了Check注解的方法),判断方法是否异常
 *
 */
public class TestCheck {
    public static void main(String[] args) throws IOException {
//1.创建对象
        Calculator c=new Calculator();
        //2.获取字节码文件对象
        Class<? extends Calculator> aClass = c.getClass();
        //3.获取所有方法
        Method[] methods = aClass.getMethods();
        //4.判断方法上是否有Check注解
        //要判断  肯定要遍历
        int  number=0;  //出现异常的次数
        BufferedWriter bw=new BufferedWriter(new FileWriter("bug.txt"));
        for (Method method:methods)
        {
            //isAnnotationPresent   方法 判断当前方法  method 对象  有没有指定的注解被加上了  被作用了
            if (method.isAnnotationPresent(Check.class))
            {
//5.有,执行
// 6.捕获异常
                try {
                    method.invoke(c);
                } catch(Exception e){
                    number++;
                    bw.write(method.getName()+"方法异常");
                bw.newLine();
                bw.write("异常名称:"+e.getCause().getClass().getSimpleName());
                bw.newLine();
                bw.write("异常原因:"+e.getCause().getMessage());
                bw.newLine();
                }
            }
            }
        bw.write("本次一个出现"+number+"次异常");
        bw.flush();
        bw.close();
        }
    }

3.测试结果:

 

四、注解小结

1.以后大多数时候,我们会使用注解,而不是自定义注解

2.注解给谁看:

(1)编译器

(2)给解析程序使用

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

 

 

 


相关文章
|
15天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
9天前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
29 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
20 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
12天前
|
Web App开发 设计模式 测试技术
自动化测试框架的搭建与实践
【10月更文挑战第5天】本文将引导你理解自动化测试框架的重要性,并通过实际操作案例,展示如何从零开始搭建一个自动化测试框架。文章不仅涵盖理论,还提供具体的代码示例和操作步骤,确保读者能够获得实用技能,提升软件质量保障的效率和效果。
|
13天前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
30 1
|
13天前
|
Web App开发 敏捷开发 Java
自动化测试框架的选择与应用
【10月更文挑战第4天】在软件开发的海洋中,自动化测试如同一艘航船,帮助开发者们快速穿越测试的波涛。选择适合项目的自动化测试框架,是确保航行顺利的关键。本文将探讨如何根据项目需求选择合适的自动化测试框架,并分享一些实用的代码示例,助你启航。
|
14天前
|
测试技术 持续交付 数据安全/隐私保护
软件测试的艺术与科学:探索自动化测试框架
【10月更文挑战第3天】在软件开发的海洋里,自动化测试犹如一艘航船,引领着项目向着质量的彼岸航行。本文将揭开自动化测试框架的神秘面纱,从理论到实践,深入浅出地探讨如何构建和运用这一工具,确保软件产品的稳定性和可靠性。我们将通过一个实际案例,展示自动化测试框架的搭建过程,以及它如何在提高测试效率、减少人力成本等方面发挥巨大作用。无论你是测试新手还是资深开发者,这篇文章都将为你提供宝贵的知识和启示。
|
13天前
|
存储 SQL 分布式计算
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
25 0
|
9天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
18 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
167 7
Jmeter实现WebSocket协议的接口测试方法