2011-10-04 51 views
5

爲了設計儘可能可重用的組件,我最近想到了所謂的「適配器註釋」的可能性。由此,我的意思是將經典的Adapter OO模式應用於Java註釋。例如,假設我有一個完全基於JUnit的單元測試套件。我需要標註了我所有的測試方法如下:Java適配器註釋

public class WidgetTest 
{ 
    @Test 
    public void test_WidgetConstructor() 
    { 
     // ... 
    } 
} 

但是,如果有,比方說,1000測試類創建一個測試套件之後,我決定我要開始單元測試有一些全新的超級什麼酷斃了測試框架,它要求所有的測試方法如下註解:

public class WidgetTest 
{ 
    @SuperCoolUnitTest(someParam="true") 
    public void test_WidgetConstructor() 
    { 
     // ... 
    } 
} 

現在,在這個特殊的例子是可能是完全可行的搜索正取代舊的註釋爲新的,但在實際應用中,這不是一個可行的解決方案。

因此纔有可能適合我「包裝」我的單元測試註解的東西自產自銷,如:

public class WidgetTest 
{ 
    @HomegrownUnitTestAnnotation 
    public void test_WidgetConstructor() 
    { 
     // ... 
    } 
} 

然後建立自己的註解處理器,將轉換的@HomegrownUnitTestAnnotation實例,以我目前需要取其註釋(@Test@SuperCoolUnitTest(someParam="true"))?

顯然,這個問題適用於所有註釋,而不僅僅是由JUnit提供的註釋。我基本上是問爲了可重用性/分離問題/是否可以包裝第三方註釋。提前致謝!

+0

因此,'全新的測試框架'是否需要轉儲JUnit API(如Assert ...)? – home

+0

在很多情況下,只有註釋被用來裝飾類和方法,而在這些方法中沒有調用任何API調用。就像我在問題中所說的那樣,這不是一個JUnit特定的場景,我問是否可以構建可以將一種類型的註釋映射到另一種類型的註釋處理器。 – IAmYourFaja

+0

Ahhhhh非常好!謝謝@home。我想我的問題的簡短答案是「是」,儘管我想知道是否有「純Java」(非Spring)方式來執行此操作。很顯然,如果Spring使用這些元註釋來做它,那麼就必須有可能制定一個本土解決方案。如果您將您的評論更改爲答案,我會很樂意爲您檢查。再次感謝。 – IAmYourFaja

回答