2012-12-14 10 views
10

के बाद यह एक वर्ग है कि एक विधि @Before साथ एनोटेट है में एक JUnit @Test विधि को चलाने के लिए, लेकिन केवल इस परीक्षण के लिए @Before विधि की अनदेखी करना संभव है?भागो JUnit @Test @ पर ध्यान नहीं देता है कि इससे पहले कि/@

संपादित करें: मुझे दिलचस्पी है यदि जुनीट इस कार्यक्षमता का समर्थन करता है, कामकाज नहीं। मैं किसी अन्य वर्ग में परीक्षण (ओं) को स्थानांतरित करने या एनोटेशन को हटाने और मैन्युअल रूप से प्रत्येक परीक्षण विधि में setUp() पर कॉल करने जैसे कामकाज से अवगत हूं।

मान लीजिए कि कक्षा में 30 परीक्षण हैं, और उनमें सेवास्तव में परीक्षण प्रारंभिकीकरण को सरल बनाते हैं, लेकिन उनमें से एक (या एक से अधिक) बेकार है/यह चीजों को जटिल बनाता है।

public class MyTestClass { 

    @Before 
    public void setUp() { 
     //setup logic 
    } 

    @Test 
    public void test1() { 
     //[...] 
    } 

    @Test 
    public void test2() { 
     //[...] 
    } 

    //more tests here 

    @Test(ignoreBefore = true, ignoreAfter = true //false by default) 
    //something equivalent to this 
    public void test20() { 
     //[...] 
    } 

} 
+0

क्या आप अलग-अलग कक्षा में '@ पहले' और '@ के बाद एनोटेशन के बिना 'test20' ले जा सकते हैं? – user1516873

+0

@ user1516873 तकनीकी रूप से हां, लेकिन मैं एक टेस्ट क्लास में कक्षा के लिए सभी परीक्षण रखना चाहता हूं। जब कक्षा को डिजाइन/विकसित किया गया था, परीक्षण का सम्मान नहीं किया गया था और रिफैक्टरिंग एक समाधान नहीं है। इसके अलावा, यूनिट परीक्षणों की परिभाषा का कहना है कि वे स्वतंत्र हैं और अलग से चलाए जा सकते हैं। – m3th0dman

उत्तर

5

आप इसे टेस्टरूल के साथ कर सकते हैं। मेरा जवाब Exclude individual test from 'before' method in JUnit पर देखें। असल में, ExternalResource लागू करें, और लागू विधि में, जांचें कि विधि पर कोई विशिष्ट टिप्पणी है या नहीं, और यदि पहले है, तो पहले/बाद विधि को न चलाएं। हालांकि आपको अपने नियम से पहले/बाद में विशेष रूप से कॉल करना होगा।

2

यदि यह बेकार है तो यह कोई समस्या नहीं होनी चाहिए - क्या यह एक बार सेटअप को चलाने के लिए नुकसान पहुंचाता है?

हालांकि मुझे नहीं लगता कि यह संभव है और मुझे एक अप्रिय विशेषता के रूप में देखता है।

एक और दृष्टिकोण - उस टेस्ट को एक अलग टेस्ट-क्लास में ले जाएं।

+1

+1 मैं निश्चित रूप से अलग टेस्ट क्लास के पक्ष में गलती करूंगा। स्पष्ट रूप से अन्य परीक्षणों में समानताएं होती हैं जिन्हें उन्हें एक साथ समूहीकृत करने की आवश्यकता होती है। आपका अजीब-एक-परीक्षण परीक्षण नहीं करता है। –

+0

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

+0

@ m3th0dman यह परीक्षणों के बीच निर्भरता नहीं है, लेकिन परीक्षण के संदर्भ से निर्भरता है। परीक्षण सेट अप विधि के साथ एक वर्ग में रखा गया है। तब इसे क्यों निष्पादित नहीं किया जाता है? बहुत आश्चर्यजनक लग रहा है। सॉफ्टवेयर विकास में आश्चर्य अप्रिय हैं। – kan

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