2011-10-27 9 views
9

मैं एक कस्टम जुनीट एनोटेशन बनाना चाहता था, जो @ टेस्ट में अपेक्षित टैग के समान कुछ है, लेकिन मैं एनोटेशन संदेश भी देखना चाहता हूं।जुनीट कस्टम एनोटेशन

कोई संकेत यह कैसे करें, या शायद कुछ तैयार है?

उत्तर

4

जुनीट 4.9 ने लाइब्रेरी के परीक्षणों के लिए "नियम" के उपयोग को कड़ा कर दिया, जो मुझे लगता है कि एक कस्टम एनोटेशन के साथ काम कर सकता है। शुरुआती बिंदु के रूप में TestRule पर एक नज़र डालें। आप उस इंटरफेस के आधार पर एक नियम लागू कर सकते हैं, और फिर अपने परीक्षणों में खेलने के लिए @ClassRule या (विधि-स्तर) @ नियम एनोटेशन का उपयोग करें।

एक अच्छा ठोस उदाहरण ExpectedException है, जो आपको @ टेस्ट (और फिर कुछ) के अपेक्षित पैरामीटर जैसे अपवाद निर्दिष्ट करने देता है।

4

अपनी कस्टम एनोटेशन को JUnit4 पिकअप करने के लिए, आपको अपना खुद का कस्टम रनर कार्यान्वयन लिखना होगा, और उसके बाद टेस्ट क्लास पर रनविथ-एनोटेशन को आपूर्ति करना होगा।

आप BlockJUnit4ClassRunner पर एक नज़र डालकर शुरू कर सकते हैं, जो जुनीट 4 के लिए डिफ़ॉल्ट कार्यान्वयन धावक है (यदि स्मृति मुझे अच्छी तरह से सेवा प्रदान करती है)।

मान लिया जाये कि आप एक कस्टम धावक MyRunner साथ @MyTest नामक कस्टम एनोटेशन लेने के लिए चाहते हो जाएगा, अपने परीक्षण वर्ग कुछ ऐसा दिखाई देगा:

@RunWith(MyRunner.class) 
class Tests { 
    ... 
    @MyTest 
    public void assumeBehaviour() { 
     ... 
    } 
} 

द्वारा "रीड मैक" जवाब एक काफी अच्छा काम करता है एक कस्टम एनोटेशन लागू करने के तरीके को निर्धारित करते हुए।

+6

कोई "रीड मैक" उत्तर नहीं है .. – BrunoJCM

1

आप पहले उत्तर में उल्लिखित कस्टम TestRule बना सकते हैं या आप TestWatcher का उपयोग/विस्तार कर सकते हैं जो पहले से ही परीक्षण शुरू/समाप्ति के लिए विधि है। एक विधि apply(Statement base, Description description) है जहां वर्णन वास्तव में आपकी परीक्षण विधि के चारों ओर एक रैपर है। Description में एक शानदार विधि getAnnotation(annotationClass) है जो आपको एक कस्टम एनोटेशन निर्दिष्ट करके आप जो करना चाहते हैं उसे

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