2010-05-04 7 views
6

इस(ग्रहण में)

public void testButtons() { 
    try { 
     page.getButtons(); 
    } catch (Exception e) { 
     throw org.codehaus.groovy.runtime.StackTraceUtils.sanitize(e);  
    } 
} 

की तरह मेरे ग्रूवी कोड देखने के लिए मेरी परीक्षणों के सभी क्योंकि मैं किसी भी संभव StackTrace दिखाई देने वाले को साफ़ करने में की जरूरत है (अन्यथा इसे पढ़ने के लिए के बाद से यह मिला है बहुत मुश्किल है रैपिंग JUnit टेस्ट सब ग्रोवी मेटा-कोड)। क्या यह निर्दिष्ट करने का कोई तरीका है कि सभी जुनीट परीक्षण विशेष रूप से लपेट जाते हैं (एक त्रुटि हैंडलर की तरह)?

नोट: मैं इन ग्रहण में चल रहा हूं, लेकिन अगर इंटेलिजे या नेटबीन्स में ऐसा करने का कोई तरीका है, तो यह जानना अच्छा होगा।

उत्तर

7

हां, नियम का उपयोग करें। असल में आपके पास एक कक्षा है जो मेथड्रू इंटरफ़ेस लागू करती है जो लागू विधि में अपवाद हैंडलिंग को अपने स्वयं के वक्तव्य कार्यान्वयन को प्रतिस्थापित करके नियंत्रित करती है जिसमें इसमें प्रयास/पकड़ है।

एक नियम का उपयोग करने के तुम इतनी तरह परीक्षण कक्षा में एक क्षेत्र को परिभाषित:

@Rule public MethodRule exceptionCleanser = new ExceptionCleanser(); 

पहली कटौती कार्यान्वयन शायद कुछ इस तरह दिखेगा: ऊपर

public class ExceptionCleanser implements MethodRule { 

     public Statement apply(final Statement base, FrameworkMethod method, Object target) { 
      return new Statement() { 
       public void evaluate() throws Throwable { 
       try { 
        base.evaluate(); 
       } catch (Exception e) { 
         throw org.codehaus.groovy.runtime.StackTraceUtils.sanitize(e);  
       } 
       } 
      }; 
     } 
    } 

पूरी तरह से अपरीक्षित है, लेकिन आपको विचार प्राप्त करने में सक्षम होना चाहिए। @Rule एनोटेशन JUnit 4.7 में पेश किया गया था, इसलिए आपको इसका उपयोग करने के लिए अपडेट करने की आवश्यकता हो सकती है।

+0

धन्यवाद @Yishai। जब मैं असली कोड प्राप्त करता हूं तो मैं यहां वापस जांच करूंगा। –

+0

बस कुछ नोट्स बनाना :) 'println (junit.runner.Version.id());' –

+0

हम्म ... वाक्यविन्यास सभी ठीक लगता है, लेकिन 'लागू' विधि कभी नहीं चल रही है। अभी भी इस बात को समझना ... –