2013-09-06 12 views
6

जब कोड है कि बाह्य संसाधनों (जैसे एक वेब सेवा या अन्य नेटवर्क आपरेशन का उपयोग कर के रूप में) के साथ बातचीत करती लेखन, मैं अक्सर कक्षाओं की संरचना इतना है कि यह भी हो सकता है बाहर निकालें एक फ़ाइल का उपयोग "stubbed" या कुछ अन्य इनपुट विधि। तो फिर मैं सिस्टम के अन्य हिस्सों का परीक्षण करने के लिए स्टब किए गए कार्यान्वयन का उपयोग कर समाप्त करता हूं और फिर एक या दो परीक्षण जो विशेष रूप से वेब सेवा को कॉल करने का परीक्षण करते हैं।स्वचालित टेस्ट स्वीट से कुछ JUnit परीक्षण

समस्या मैं या तो जेनकींस से या इन बाहरी सेवाओं बुला जा नहीं करना चाहती है, जब मैं अपने प्रोजेक्ट (जैसे, "Gradle परीक्षण") के लिए परीक्षण के सभी चलाते हैं। कुछ सेवाओं के दुष्प्रभाव होते हैं, या सभी डेवलपर्स के लिए उपलब्ध नहीं हो सकते हैं।

अभी मैं सिर्फ टिप्पणी हटाएं और फिर इन विशेष परीक्षण तरीकों पर सक्षम और उन्हें निष्क्रिय करने के लिए फिर से टिप्पणी @Test एनोटेशन। इसे सक्षम करें, इसे जांचने के लिए मैन्युअल रूप से चलाएं, फिर इसे फिर से टिप्पणी करना याद रखें।

// Uncomment to test external service manually 
//@Test 
public void testSomethingExternal() { 

क्या ऐसा करने का एक बेहतर तरीका है?

संपादित करें: मैन्युअल यूनिट परीक्षण के लिए, मैं ग्रहण का उपयोग करता हूं और परीक्षण विधि पर राइट-क्लिक करने में सक्षम हूं और रन -> जुनीट परीक्षण करता हूं। लेकिन यह (असम्बद्ध) एनोटेशन के बिना काम नहीं करता है।

+0

यह आप एक स्वचालित इकाई परीक्षण है कि आप आगे और पीछे के बीच या बस मैन्युअल रूप से विकास के दौरान उन्हें टॉगल की एक क्लीनर तरीका बदल सकते हैं की "प्रोफ़ाइल" चाहते रहे हैं कि क्या स्पष्ट नहीं है। – chrylis

+0

@chrylis जो मैं मूल रूप से करने की कोशिश कर रहा था वह एक व्यक्तिगत परीक्षण चलाने के लिए था। हालांकि, इन प्रकार के परीक्षणों के लिए एक अलग प्रोफ़ाइल बनाने का विचार शायद एक बेहतर दृष्टिकोण है। हालांकि मैं अभी भी कुछ परीक्षणों को अलग से चलाने की क्षमता चाहता हूं (उदाहरण के लिए जहां साइड इफेक्ट्स हैं, उदाहरण के लिए - जो मैं टालने का प्रयास करता हूं लेकिन कभी-कभी अपरिहार्य है)। –

उत्तर

2

जहां तक ​​मेरा आप Gradle और एपीआई का उपयोग JUnit का कहना है के लिए है कि एनोटेशन @Ignore परीक्षण को निष्क्रिय देख सकते हैं। मैं ग्रेडल कार्य जोड़ूंगा जो उन परीक्षणों के लिए @Ignore जोड़ देगा।

3

यदि आप केवल कार्यक्षमता के लिए परीक्षण अक्षम करना चाहते हैं जो अभी तक लिखे गए हैं या अन्यथा अस्थायी रूप से कुछ परीक्षणों को मैन्युअल रूप से अक्षम नहीं करते हैं, तो आप @Ignore का उपयोग कर सकते हैं; परीक्षण छोड़ दिए जाएंगे लेकिन रिपोर्ट में अभी भी नोट किया गया है।

यदि आप स्प्रिंग प्रोफाइल की तरह कुछ चाहते हैं, जहां आप नियमों को परिभाषित कर सकते हैं जिसके लिए परीक्षण चलते हैं, तो आपको या तो अलग-अलग परीक्षण मामलों में अपने परीक्षणों को विभाजित करना चाहिए या Filter का उपयोग करना चाहिए।

+0

दिलचस्प। ऊपर मेरा संपादन देखें - शायद मैं एक फ़िल्टर कर सकता हूं जो पता लगाता है कि जब मैं ग्रहण में एक परीक्षण चला रहा हूं और (अन) फ़िल्टर विधि उचित तरीके से फ़िल्टर करता हूं। (इस बारे में स्प्रिंग प्रोफाइल की तरह नहीं सोचा था, लेकिन हाँ यह काफी समान है।) –

6

मैं जूनिट श्रेणियों का उपयोग करने की सलाह देता हूं। विवरण के लिए यह ब्लॉग देखें: https://community.oracle.com/blogs/johnsmart/2010/04/25/grouping-tests-using-junit-categories-0

असल में, आप एक विशेष श्रेणी में होने के रूप में कुछ परीक्षणों को एनोटेट कर सकते हैं और फिर आप दो टेस्ट सूट सेट कर सकते हैं: वह उस श्रेणी के परीक्षण चलाता है और वह उस श्रेणी में परीक्षणों को अनदेखा करता है (लेकिन बाकी सब कुछ चलाता है)

@Category(IntegrationTests.class) 
public class AccountIntegrationTest { 

    @Test 
    public void thisTestWillTakeSomeTime() { 
    ... 
    } 

    @Test 
    public void thisTestWillTakeEvenLonger() { 
    .... 
    } 

}

तुम भी अलग-अलग परीक्षण "टिप्पणी कर सकते हैं

public class AccountTest { 

    @Test 
    @Category(IntegrationTests.class) 
    public void thisTestWillTakeSomeTime() { 
    ... 
    } 

कभी भी मैं कुछ मैन्युअल रूप से चालू हो रही है या बंद मैं ग देखना Ringe।

+0

धन्यवाद - यह एक अच्छा विचार की तरह लगता है। यह सुनिश्चित नहीं है कि यह ग्रैडल या एक्लिप्स के साथ कैसे इंटरैक्ट करता है, उसे आगे की जांच करनी होगी। –

+0

ग्रहण में ठीक काम करता है। आप अभी भी वही रन करते हैं -> जुनीट – dkatzel

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