2010-09-28 10 views
5

मैं निर्णय लेने के लिए या नहीं, यह तय करने के लिए जूनिट धारणाओं का उपयोग करता हूं।
टेस्ट जहां अनुमान विफल रहता है, जूनिट ढांचे द्वारा ignored/skipped हैं।अनुमानित विफलता की वजह से छोड़ा गया एक जूनिट परीक्षण क्यों छोड़ा गया है?

मुझे आश्चर्य है कि छोड़े गए परीक्षणों को 'छोड़ दिया' क्यों नहीं बताया जाता है?

import static org.junit.Assert.fail; 
import org.junit.Assume; 
import org.junit.Test; 

public class AssumptionTest { 

    @Test 
    public void skipAssumptionFailureTest() { 
     Assume.assumeTrue("foo".equals("bar")); 
     fail("This should not be reached!"); 
    } 
} 

में एक Maven परियोजना परिणामों में इस परीक्षण चल रहा है:

Running AssumptionTest 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec 

मैं पसंद करेंगे इस परीक्षण के रूप में 'को छोड़ दिया' सूचना के लिए

कृपया उदाहरण पर एक नजर है। क्या इसे हासिल करने का कोई मौका है?

(JUnit 4.8.1; Maven 2.2.1; जावा 1.6.0_21)

उत्तर

2

आप इस बाहर के बॉक्स नहीं कर सकते परीक्षण को छोड़ने के लिए एक ही रास्ता के रूप में @Ignore टिप्पणी के साथ है। हालांकि, मुझे blog post मिल गया जो कि आप जो खोज रहे हैं:

+0

प्रतिक्रिया के लिए धन्यवाद। बहुत बुरा है कि यह बॉक्स से बाहर काम नहीं करता है। एक कस्टम धावक को कार्यान्वित करना मेरे लिए काम नहीं करेगा - मैं आमतौर पर अपने परीक्षणों में एक कस्टम धावक (SpringJUnit4ClassRunner) का उपयोग करता हूं जिसे मैं विस्तारित नहीं करूंगा। मैं समाधान में एक निर्माण पसंद किया होगा। – FrVaBe

+1

कृपया ब्लॉग पोस्ट से महत्वपूर्ण भागों को एक उत्तर के रूप में जोड़ें, अन्यथा यह ब्लॉग बहुत ही बेकार होगा जैसे ही ब्लॉग पोस्ट गायब हो जाता है। (मुझे प्रभावित है कि पिछले 7 वर्षों से किसी ने इसका उल्लेख नहीं किया है) –

2

वसंत एक अनदेखी एनोटेशन का एक और संस्करण लाता है, जो रनटाइम पर निर्णय लेने में सक्षम होता है कि परीक्षण को अनदेखा करना है: @IfProfileValue। में उपयोगकर्ता द्वारा ProfileValueSource की आपूर्ति के साथ, आप कुछ सीमित चाल कर सकते हैं।

Spring Test Documentation देखें।

लेकिन यह कुछ परीक्षण कोड करने में सक्षम होने के समान नहीं है और परीक्षण विधि के बीच में परीक्षण को अनदेखा करने का निर्णय लेते हैं, जैसा कि आप धारणाओं के साथ कर सकते हैं।

+0

अच्छी टिप्पणी - कुछ उपयोग मामलों के लिए निश्चित रूप से सहायक। – FrVaBe

+0

नोट: वसंत '@ IfProfileValue' केवल ** स्किप्स/अनदेखा ** परीक्षण अगर नाम और मान मेल नहीं खाता है और यह ** ** इसे नहीं चलाता है। यदि आप इसके साथ जुनीट श्रेणियों के कार्यान्वयन को कार्यान्वित करना चाहते हैं तो आपको _ignoring_ के बजाय 'springJUnit4ClassRunner # runChild' को _not-run_ तक विस्तारित करने की आवश्यकता हो सकती है।यह मुख्य रूप से मायने रखता है अगर इसके परिणाम जेनकींस में हैं। – raksja

2

जबकि पिछले उत्तर अपने आप अच्छे हैं, मैं "क्यों" प्रश्न को संबोधित करना चाहता हूं।

समस्या इस तथ्य से उत्पन्न हुई कि कैसे परीक्षण विफल/अनदेखा किए गए थे। जब धारणाएं शामिल की जाती थीं, तो सामान्य गणना थोड़ी-थोड़ी कम होती थी (अनुमान लगाया जाता है कि परीक्षण के माध्यम से परीक्षण आधे रास्ते से हो सकता है)।

टूल्स धावकों के साथ भी समस्याएं थीं, जिससे गन्दा रिपोर्टिंग हुई। here for Surefire dev conversation with JUnit people, और here for related Eclipse bug देखें।

अभी यह मेवेन में कोई समस्या नहीं है, और यह नए ग्रहण में नहीं होना चाहिए। मैं eclipse.buildId = 2.9.2.201205071000-RELEASE पर आधारित एसटीएस का उपयोग करता हूं और मुझे अभी भी इस व्यवहार का अनुभव है।

संपादित करें: संदर्भ प्रकार लिंक काम नहीं करते हैं।

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