怎么在Java中通過自定義注解實現(xiàn)一個函數(shù)測試功能?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

惠陽網(wǎng)站建設公司創(chuàng)新互聯(lián),惠陽網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為惠陽成百上千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的惠陽做網(wǎng)站的公司定做!
一 自定義注解
使用@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è)務出現(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對應的類里的所有方法
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è)務出現(xiàn)異常!
方法public static void MyTest.m3()運行失敗,異常:java.lang.IllegalArgumentException: 參數(shù)出錯了!
共運行了:4個方法,其中:
失敗了:2個,
成功了:2個!
看完上述內(nèi)容,你們掌握怎么在Java中通過自定義注解實現(xiàn)一個函數(shù)測試功能的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
本文題目:怎么在Java中通過自定義注解實現(xiàn)一個函數(shù)測試功能
當前網(wǎng)址:http://www.chinadenli.net/article24/piejce.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、網(wǎng)站制作、域名注冊、App設計、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)