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

简介: java注解精讲

 目录

一、自定义注解

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 {
}

image.gif

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.........");
}
}

image.gif

给加减乘除四个方法加上了@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();
        }
    }

image.gif

3.测试结果:

image.gif编辑

image.gif编辑

四、注解小结

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

2.注解给谁看:

(1)编译器

(2)给解析程序使用

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


相关文章
|
5月前
|
Java 编译器
Java注解案例-简单测试框架
Java注解案例-简单测试框架
25 0
|
SQL 缓存 算法
Spring 5 中文解析测试篇-集成测试之概要和注解
Spring 5 中文解析测试篇-集成测试之概要和集成测试注解
848 0
|
17天前
|
安全 Java 测试技术
Spring Boot 自动化单元测试类的编写过程
企业开发不仅要保障业务层与数据层的功能安全有效,也要保障表现层的功能正常。但是我们一般对表现层的测试都是通过postman手工测试的,并没有在打包过程中代码体现表现层功能被测试通过。那么能否在测试用例中对表现层进行功能测试呢?答案是可以的,我们可以使用MockMvc来实现它。
48 0
|
Java 测试技术 容器
Springboot+mockito进行单元测试心得整体
## SpringBoot应用测试 测试Springboot应用需要依赖一个非常重要的注解@SpringBootTest,这个注解会为测试用例构建Spring容器。@SpringBootTest注解修饰的测试用例默认不会启动web容器,如果需要启动web容器需要设置webEnvironment属性: * MOCK(默认):会启动一个mock的web server,可以配合@AutoConfig
6301 0
|
12月前
|
Java 测试技术 程序员
枚举、注解及单元测试的简单笔记
枚举、注解及单元测试的简单笔记
51 0
|
12月前
|
Java Android开发
Butter Knife框架(小刀注解)_@BindView()用法
对于ButterKnife类官方的解释是: Field and method binding for Android views. Use this class to simplify finding views and attaching listeners by binding them with annotations. 翻译过来就是: Android视图的字段和方法绑定。使用此类通过将视图与注释绑定来简化查找视图和附加侦听器。
84 0
|
Java 测试技术 数据库连接
单元测试_JUnit常用单元测试注解介绍及代码演示 1
单元测试_JUnit常用单元测试注解介绍及代码演示
120 0
|
Java 测试技术
单元测试_JUnit常用单元测试注解介绍及代码演示 2
单元测试_JUnit常用单元测试注解介绍及代码演示
100 0
|
缓存 Java 测试技术
单元测试整合spring-test实践
本文主要是对Junit简介,以及结合说spring-test完善Junit不足,以及使用需要注意的问题。
229 0