2011-02-28 8 views
14

वर्तमान में, मैं जावा और सेलेनियम आरसी का उपयोग कर स्वचालन परीक्षण लिख रहा हूं।टेस्टकेस में असर विफलता को अनदेखा करें (JUnit)

मैं सभी सामग्री को यूजर इंटरफेस पर उपस्थित सत्यापित करना चाहते हैं, समारोह नीचे यानी जाता है:

public String UITest() throws IOException { 

    String result="Test Start<br />"; 

    try { 
     openfile(1); 
     for (String url : uiMaps.keySet()) { 
      selenium.open(url); 
      for (String item : uiMaps.get(url)) {     
       assertEquals(url+" check: " + item, true,selenium.isTextPresent(item)); 
       result+=url+" check: " + item+" : OK<br />"; 
      } 
     } 
    } catch (AssertionError e) { 
     result+=e.getMessage(); 
    } 
    result+="Test finished<br />"; 
    return result; 
} 

समारोह वापसी एक स्ट्रिंग परीक्षण के बारे में जानकारी शामिल है मान लें कि। हालांकि, एक दावा त्रुटि होने के बाद फ़ंक्शन रुक गया।

तो, मैं जानना चाहता हूं कि विफलता को अनदेखा करने और सभी दावे सत्यापनों को निष्पादित करने का कोई तरीका है या नहीं।

किसी भी मदद

उत्तर

18

आप इस्तेमाल कर सकते हैं एक JUnit 4 error collector rule:

ErrorCollector शासन के लिए एक परीक्षण के निष्पादन की अनुमति देता है के बाद जारी रखें पहली समस्या पाई जाती है (के लिएउदाहरण के लिए, किसी तालिका में सभी गलत पंक्तियों इकट्ठा करने के लिए, और उन्हें एक बार में रिपोर्ट )

उदाहरण के लिए आप इस तरह एक परीक्षण लिख सकते हैं।

public static class UsesErrorCollectorTwice { 
    @Rule 
    public ErrorCollector collector= new ErrorCollector(); 

    @Test 
    public void example() { 
    String x = [..] 
    collector.checkThat(x, not(containsString("a"))); 
    collector.checkThat(y, containsString("b"));    
    } 
} 

त्रुटि संग्रहकर्ता हैमक्रिस्ट मैचर्स का उपयोग करता है। आपकी वरीयताओं के आधार पर यह सकारात्मक है या नहीं।

+0

ऐसा लगता है कि यह सभी परीक्षणों को निष्पादित करेगा, यहां तक ​​कि एक असफल रहा है। लेकिन मुझे एक और सवाल मिला। मैं एपीआई की जांच करता हूं और यह कहता है कि एक टेबल में सभी गलत पंक्तियां, और एक बार में सभी को रिपोर्ट करें। मेरा सवाल यह है कि किसी भी तरह से मैं टेबल की जानकारी ले सकता हूं? धन्यवाद। – user638297

+0

मूल त्रुटि रंगकर्ता की त्रुटियों की सूची की पहुंच के कारण, मैंने जूनिट एक को विरासत में अपना स्वयं का त्रुटि चयनकर्ता लागू किया। अब यह काम कर रहा है। सहायता के लिए बहुत - बहुत धन्यवाद। – user638297

+0

@ user638297 हां एक विधि नियम लागू करने के लिए मुश्किल नहीं है जो वास्तव में आप चाहते हैं। क्या आप अपनी सारी जानकारी एकत्र कर सकते हैं? –

0

के लिए धन्यवाद समारोह में कुछ भी जोर है। वापसी अशक्त बजाय कहते हैं, और जो कोई भी जारी रखने के लिए, लेकिन फिर असफल हो समारोह सेलेनियम documentation से लौटे अशक्त

2

यह कॉल कर रहा है है:

सभी सेलेनियम दावे 3 मोड में इस्तेमाल किया जा सकता है: "जोर" " सत्यापित करें ", और" प्रतीक्षा करें "। उदाहरण के लिए, आप "assertText", "verifyText" और "waitForText" कर सकते हैं। जब एक "जोर" विफल रहता है, परीक्षण निरस्त कर दिया जाता है। जब कोई "सत्यापित" विफल रहता है, तो परीक्षण निष्पादन जारी रहेगा, विफलता लॉगिंग करेगा। यह एक एकल "ज़ोर" यह सुनिश्चित करें कि आवेदन सही पृष्ठ पर है, आदि की अनुमति देता है, "सत्यापित" के रूप फ़ील्ड मान का परीक्षण करने के दावे, लेबल एक गुच्छा के बाद

+0

मैंने सोचा था कि समस्या सेलेनियम की बजाय जुनीट का कार्य है, क्योंकि मैंने जो फ़ेल सेलेनियम का उपयोग किया है, वह "isTextPresent" है और यह केवल बूलियन मान लौटने का प्रभारी है। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं। धन्यवाद। – user638297

+1

प्रलेखन के अनुसार, आपके पास हमेशा पसंद है: * assert * TextPresent, * सत्यापित करें * TextPresent और * है * TextPresent। प्रत्येक संस्करण में अलग-अलग व्यवहार होते हैं। –

1

मुझे यकीन है कि आपने हूँ इसे बाहर अपने आप को अब तक लगा: कोशिश पकड़ नहीं इसके बारे में बाहर, पाश के लिए अंदर होना चाहिए;)

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