欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java使用自定義注解實現(xiàn)函數(shù)測試功能示例

 更新時間:2019年10月21日 08:42:22   作者:cakincqm  
這篇文章主要介紹了Java使用自定義注解實現(xiàn)函數(shù)測試功能,結(jié)合實例形式分析了java自定義注解在函數(shù)測試過程中相關(guān)功能、原理與使用技巧,需要的朋友可以參考下

本文實例講述了Java使用自定義注解實現(xiàn)函數(shù)測試功能。分享給大家供大家參考,具體如下:

一 自定義注解

  • 使用@interface定義Annotation
  • 使用Annotation修飾程序中的類、方法、變量、接口等定義,通常我們會把Annotation放在所有修飾符之前。
  • 定義帶成員變量的Annotation。
  • 為Annotation的成員變量指定初始值。

二 提取Annotation

Annotation接口來代表程序元素前面的注釋,該接口是所有Annotation類型的父接口。

AnnotatedElement接口代表程序中可以接受注釋的程序元素。

調(diào)用AnnotatedElement對象的如下三個方法來訪問Annotation信息:

  • getAnnotation(Class<T> annotationClass):返回該程序元素上存在的、指定類型的注釋,如果該類型的注釋不存在,則返回null。
  • Annotation[] getAnnotations():返回該程序元素上存在的所有注釋。
  • boolean isAnnotationPresent(Class<? extends Annotation> annotationClass):判斷該程序元素上是否包含指定類型的注釋,存在則返回true,否則返回false。

三 實戰(zhàn)——標記哪些方法是可測試的

1 Testable.java

import java.lang.annotation.*;
// 使用JDK的元數(shù)據(jù)Annotation:Retention
@Retention(RetentionPolicy.RUNTIME)
// 使用JDK的元數(shù)據(jù)Annotation:Target
@Target(ElementType.METHOD)
// 定義一個標記注解,不包含任何成員變量,即不可傳入元數(shù)據(jù)
public @interface Testable
{
}

2 MyTest.java

public class MyTest
{
  // 使用@Testable注解指定該方法是可測試的
  @Testable
  public static void m1()
  {
  }
  public static void m2()
  {
  }
  // 使用@Testable注解指定該方法是可測試的
  @Testable
  public static void m3()
  {
   throw new IllegalArgumentException("參數(shù)出錯了!");
  }
  public static void m4()
  {
  }
  // 使用@Testable注解指定該方法是可測試的
  @Testable
  public static void m5()
  {
  }
  public static void m6()
  {
  }
  // 使用@Testable注解指定該方法是可測試的
  @Testable
  public static void m7()
  {
   throw new RuntimeException("程序業(yè)務(wù)出現(xiàn)異常!");
  }
  public static void m8()
  {
  }
}

3 ProcessorTest.java

import java.lang.reflect.*;
public class ProcessorTest
{
  public static void process(String clazz)
     throws ClassNotFoundException
  {
   int passed = 0;
   int failed = 0;
   // 遍歷clazz對應(yīng)的類里的所有方法
   for (Method m : Class.forName(clazz).getMethods())
   {
     // 如果該方法使用了@Testable修飾
     if (m.isAnnotationPresent(Testable.class))
     {
      try
      {
        // 調(diào)用m方法
        m.invoke(null);
        // 測試成功,passed計數(shù)器加1
        passed++;
      }
      catch (Exception ex)
      {
        System.out.println("方法" + m + "運行失敗,異常:"
           + ex.getCause());
        // 測試出現(xiàn)異常,failed計數(shù)器加1
        failed++;
      }
     }
   }
   // 統(tǒng)計測試結(jié)果
   System.out.println("共運行了:" + (passed + failed)
      + "個方法,其中:\n" + "失敗了:" + failed + "個,\n"
      + "成功了:" + passed + "個!");
  }
}

4 RunTests.java

public class RunTests
{
  public static void main(String[] args)
     throws Exception
  {
   // 處理MyTest類
   ProcessorTest.process("MyTest");
  }
}

四 運行

方法public static void MyTest.m7()運行失敗,異常:java.lang.RuntimeException: 程序業(yè)務(wù)出現(xiàn)異常!
方法public static void MyTest.m3()運行失敗,異常:java.lang.IllegalArgumentException: 參數(shù)出錯了!
共運行了:4個方法,其中:
失敗了:2個,
成功了:2個!

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • 關(guān)于.java編譯成.class?與?.class反編譯成.java問題

    關(guān)于.java編譯成.class?與?.class反編譯成.java問題

    這篇文章主要介紹了關(guān)于.java編譯成.class?與?.class反編譯成.java問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Ubuntu 15下安裝JDK1.8教程

    Ubuntu 15下安裝JDK1.8教程

    這篇文章主要為大家詳細介紹了Ubuntu 15下JDK1.8安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java中volatile?的作用

    Java中volatile?的作用

    這篇文章主要介紹了Java中volatile?的作用,volatile是Java并發(fā)編程的重要組成部分,主要作用是保證內(nèi)存的可見性和禁止指令重排序,下文更多對volatile作用的介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Spring 應(yīng)用中集成 Apache Shiro的方法

    Spring 應(yīng)用中集成 Apache Shiro的方法

    這篇文章主要介紹了Spring 應(yīng)用中集成 Apache Shiro的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Struts2配置文件中使用通配符的方法(三種形式)

    Struts2配置文件中使用通配符的方法(三種形式)

    Struts2是一個基于MVC設(shè)計模式的Web應(yīng)用框架,它本質(zhì)上相當于一個servlet,在MVC設(shè)計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數(shù)據(jù)交互。這篇文章主要介紹了Struts2配置文件中使用通配符的相關(guān)知識,需要的朋友可以參考下
    2019-11-11
  • Java 獲取本機的IP與MAC地址實現(xiàn)詳解

    Java 獲取本機的IP與MAC地址實現(xiàn)詳解

    這篇文章主要介紹了Java 獲取本機的IP與MAC地址實現(xiàn)詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Java gRPC攔截器簡單實現(xiàn)分布式日志鏈路追蹤器過程詳解

    Java gRPC攔截器簡單實現(xiàn)分布式日志鏈路追蹤器過程詳解

    有請求的發(fā)送、處理,當然就會有攔截器的需求,例如在服務(wù)端通過攔截器統(tǒng)一進行請求認證等操作,這些就需要攔截器來完成,今天松哥先和小伙伴們來聊一聊gRPC中攔截器的基本用法,后面我再整一篇文章和小伙伴們做一個基于攔截器實現(xiàn)的JWT認證的gRPC
    2023-03-03
  • springMvc和mybatis-plus中枚舉值和字段的映射

    springMvc和mybatis-plus中枚舉值和字段的映射

    這篇文章主要為大家介紹了springMvc和mybatis-plus中枚舉值和字段的映射示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 深入了解Java SpringBoot自動裝配原理

    深入了解Java SpringBoot自動裝配原理

    在使用springboot時,很多配置我們都沒有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動裝配。本文將詳細為大家講解SpringBoot的自動裝配原理,需要的可以參考一下
    2022-03-03
  • SQL Server 2000 Driver for JDBC Service Pack 3 安裝測試方法

    SQL Server 2000 Driver for JDBC Service Pack 3 安裝測試方法

    這篇文章主要介紹了數(shù)據(jù)庫連接測試程序(SQL Server 2000 Driver for JDBC Service Pack 3 安裝測試),需要的朋友可以參考下
    2014-10-10

最新評論