中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么通過自定義注解實現函數測試功能

發布時間:2021-07-26 14:17:24 來源:億速云 閱讀:157 作者:Leah 欄目:編程語言

Java中怎么通過自定義注解實現函數測試功能,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

一 自定義注解

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

二 提取Annotation

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

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

調用AnnotatedElement對象的如下三個方法來訪問Annotation信息:

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

三 實戰——標記哪些方法是可測試的

1 Testable.java

import java.lang.annotation.*;// 使用JDK的元數據Annotation:Retention@Retention(RetentionPolicy.RUNTIME)// 使用JDK的元數據Annotation:Target@Target(ElementType.METHOD)// 定義一個標記注解,不包含任何成員變量,即不可傳入元數據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("參數出錯了!");  }  public static void m4()  {  }  // 使用@Testable注解指定該方法是可測試的  @Testable  public static void m5()  {  }  public static void m6()  {  }  // 使用@Testable注解指定該方法是可測試的  @Testable  public static void m7()  {   throw new RuntimeException("程序業務出現異常!");  }  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對應的類里的所有方法   for (Method m : Class.forName(clazz).getMethods())   {     // 如果該方法使用了@Testable修飾     if (m.isAnnotationPresent(Testable.class))     {      try      {        // 調用m方法        m.invoke(null);        // 測試成功,passed計數器加1        passed++;      }      catch (Exception ex)      {        System.out.println("方法" + m + "運行失敗,異常:"           + ex.getCause());        // 測試出現異常,failed計數器加1        failed++;      }     }   }   // 統計測試結果   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: 程序業務出現異常!方法public static void MyTest.m3()運行失敗,異常:java.lang.IllegalArgumentException: 參數出錯了!共運行了:4個方法,其中:失敗了:2個,成功了:2個!

看完上述內容,你們掌握Java中怎么通過自定義注解實現函數測試功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴国县| 龙海市| 额尔古纳市| 略阳县| 乐清市| 大埔县| 筠连县| 历史| 贵州省| 浪卡子县| 西充县| 习水县| 福安市| 额济纳旗| 江华| 乃东县| 乌兰浩特市| 恭城| 樟树市| 北京市| 平顶山市| 琼中| 治县。| 虞城县| 化州市| 同心县| 甘肃省| 桐柏县| 东源县| 栾川县| 湖口县| 肥城市| 沾化县| 怀宁县| 疏勒县| 从江县| 新建县| 城固县| 德州市| 志丹县| 南靖县|