2011-10-04 17 views
5

घटक है कि संभव के रूप में पुन: प्रयोज्य हैं डिजाइन करने के लिए, मैं तथाकथित की संभावना के बारे में हाल ही में सोच करने के लिए मिल गया के प्रयास में "एडाप्टर एनोटेशन।" इसके द्वारा, मेरा मतलब जावा एनोटेशन के लिए क्लासिक Adapter ओओ पैटर्न का उपयोग है। तो उदाहरण के लिए, मान लें कि मेरे पास एक यूनिट परीक्षण सूट है जो पूरी तरह से जुनीट-आधारित है। मैं अपने परीक्षण तरीकों के सभी टिप्पणी करने के लिए इस प्रकार की आवश्यकता होगी:जावा एडाप्टर एनोटेशन

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

लेकिन क्या होगा अगर, साथ, कहते हैं, 1000 परीक्षण कक्षाओं टेस्ट स्वीट बनाने के बाद, मैं तय मैं कुछ नया सुपर साथ इकाई परीक्षण शुरू करना चाहते हैं -Cool परीक्षण ढांचे है कि सभी परीक्षण तरीकों की आवश्यकता है इस प्रकार है एनोटेट करने के लिए किया जा:

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

तो जुनीट एपीआई (जैसे एसेट ...) को डंप करने के लिए 'ब्रांड नया टेस्ट फ्रेमवर्क' भी आवश्यक है? – home

+0

ऐसे कई मामले हैं जहां कक्षाओं और विधियों को सजाने के लिए केवल एनोटेशन का उपयोग किया जाता है, बिना उन तरीकों के अंदर किसी भी एपीआई कॉल का आह्वान किया जाता है। जैसा कि मैंने सवाल में कहा है, यह एक जुनीट-विशिष्ट परिदृश्य नहीं है, मैं पूछ रहा हूं कि एनोटेशन प्रोसेसर भी बनाना संभव है जो एक प्रकार की एनोटेशन को दूसरे में मैप कर सकते हैं। – IAmYourFaja

+0

अहह्ह बहुत अच्छा है! धन्यवाद @ होम। मुझे लगता है कि मेरे प्रश्न का संक्षिप्त उत्तर "हां" है, हालांकि मैं सोच रहा हूं कि ऐसा करने के लिए "शुद्ध जावा" (गैर-वसंत) तरीका है या नहीं। जाहिर है, अगर वसंत इन मेटा-एनोटेशन के साथ करता है, तो घर का हल समाधान करना संभव होना चाहिए। यदि आप अपनी टिप्पणी को किसी उत्तर में बदलते हैं तो मैं खुशी से इसे आपके लिए देखूंगा। एक बार फिर धन्यवाद। – IAmYourFaja

उत्तर

3

वसंत के मेटा-एनोटेशन पर एक नज़र डालें। ऐसा लगता है कि यह वह अवधारणा है जिसे आप ढूंढ रहे हैं: http://blog.springsource.com/2009/05/06/spring-framework-30-m3-released/

आप अपनी खुद की आवेदन करने के लिए इसी अवधारणा लागू करने में सक्षम हो सकता है।

+0

महान सुझाव के लिए फिर से धन्यवाद – IAmYourFaja

संबंधित मुद्दे