2012-09-18 39 views
14

मैवेन + टेस्टएनजी + सेलेनियम के साथ एक परीक्षण ढांचे को लागू करने के बारे में।TestNG.xml सुइट सभी फ़ाइलों को सभी फ़ाइलों को शामिल करने के लिए

आप एक suite.xml कैसे घोषित करते हैं जो सभी परीक्षण चलाने के लिए टेस्टएनजी को बताता है? मैं कोई लाभ नहीं हुआ इन सभी की कोशिश की है:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <classes> 
     <class name="*" /> 
    </classes> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <groups> 
     <run> 
     <include name="*" /> 
     <exclude name="disabled" /> 
     </run> 
    </groups> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <packages> 
     <package name="*" /> 
    </packages> 
    </test> 
</suite> 

मैं अलग paramers लेकिन सभी सभी परीक्षण चलाने के साथ अलग अलग सूट विन्यास निर्दिष्ट की जरूरत है। प्रत्येक उदाहरण जिसे मैं खोद सकता हूं, प्रत्येक कक्षा या पैकेज को स्पष्ट रूप से सूचीबद्ध करता है जो मुझे शून्य से कम समझ में आता है।

+0

मुझे इसी तरह यह वास्तव में विचित्र लगता है। यह न केवल संभव है, लेकिन * आसान * एक 'test' निर्देशिका में एक टेस्टएनजी परीक्षण बनाने के लिए, जैसा कि उम्मीद है, लेकिन 'testng.xml' को अपडेट करने में विफल रहता है और देखो और देखें, परीक्षण वास्तव में भाग के रूप में नहीं चल रहा है सुइट का ... – dimo414

उत्तर

7

आप के रूप

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="sampleTest" parallel="false"> 

    <test name="sample-Test" preserve-order="true" verbose="2"> 
     <packages> 
      <package name="org.sample.something.*"/> 
     </packages> 
    </test> 

</suite> 

testng.xml फ़ाइल की घोषणा के द्वारा एक पैकेज के अंदर सभी परीक्षण कक्षाओं में जोड़ सकते हैं वहाँ कहीं नहीं खोज विकल्प के रूप में परीक्षण पास करने के लिए है। यदि आप ऐसा कुछ करना चाहते हैं तो आपको कोड में सूट लागू करना होगा और वहां खोज परिदृश्य लागू करना होगा।

+1

सैकड़ों पैकेजों और हजारों कक्षाओं को सूचीबद्ध करना निश्चित रूप से ऐसा कुछ है जो मैं करने का इरादा नहीं रखता हूं। मैं पृथ्वी पर क्यों? यह अनावश्यक जानकारी है। मेवेन + टेस्टएनजी डिफ़ॉल्ट रूप से सभी परीक्षणों को पा सकता है, सूट निर्दिष्ट करते समय यह सुविधा क्यों खो जाती है? (पैरामीटर जोड़ने का एकमात्र इरादा ...) – sibidiba

+3

आपके पैकेज नाम नियमित अभिव्यक्ति हो सकते हैं, आपको सब कुछ चलाने की अनुमति देगा। हालांकि, यह बहुत महंगा है, क्योंकि टेस्टएनजी को ऐसा करने के लिए अपने पूरे वर्ग पथ पर चलना है। –

+0

बिल्कुल वही जो मैं खोज रहा हूं। क्लास = "\ *" तब क्यों काम नहीं करता है? (कक्षा पथ के माध्यम से चलना महंगा नहीं है क्योंकि यह स्टार्टअप पर केवल एक बार होता है। प्रत्येक वर्ग/पैकेज को हाथ से सूचीबद्ध करना * महंगा और त्रुटि प्रवण है।) – sibidiba

1

AFAIK testng में आपके जैसे रेगेक्स का विकल्प नहीं है।

लेकिन मुझे लगता है कि तुम क्या आप दो तरह से चाहते हैं प्राप्त कर सकते हैं:

  1. आप TestNG प्लगइन के साथ ग्रहण पर काम कर रहे हैं। आप बस अपने टेस्ट फ़ोल्डर का चयन कर सकते हैं जिसमें सभी संकुल परिभाषित हैं। मेवेन के साथ यह ज्यादातर आपका src/test/जावा फ़ोल्डर होगा, राइट क्लिक करें और testng के रूप में चलाएं। यह क्या करेगा यह एक अस्थायी customsuite.xml बना देगा जिसमें आपके सभी वर्ग सूचीबद्ध होंगे। आप एक्सएमएल को अपने डिफ़ॉल्ट एक्सएमएल के रूप में सहेज सकते हैं।

  2. मेवेन के साथ निश्चित प्लगइन में includes और फिर एक पैटर्न निर्दिष्ट करने का विकल्प होता है। आप इसे * / .java पर सेट करने का प्रयास कर सकते हैं जो मुझे लगता है कि सभी टेस्टकेस पिकअप करेंगे (हालांकि कोशिश नहीं की गई)। आप एमवीएन परीक्षण के रूप में अपने परीक्षणों का आह्वान कर सकते हैं।

+0

जब मैं पैकेज पर क्लिक करता हूं तो यह customsuite.xml टेस्टNG द्वारा डिज़ाइन किया गया है ? – R11G

+0

प्लगइन कोड में होना चाहिए। या क्या मुझे आपका प्रश्न मिला ...? –

+0

हाँ। मुझे लगता है कि आपने इसका उत्तर दिया। Customsuite xml प्लगइन्स कोड के आधार पर डिज़ाइन किया गया है। विशेष रूप से हम किस प्लगइन के बारे में बात कर रहे हैं? – R11G

17

का उपयोग करना चाहिए। * जहां तक ​​मुझे पता है उन सभी से मिलान करने के लिए।

+3

यह है! <पैकेज नाम = "। *" />

+0

धन्यवाद! बहुत उपयोगी –

2

मान लें कि आपके पास तीन स्तर का पैकेज है, आपकी टेस्ट क्लासेस com.abc.xyz पैकेज के अंतर्गत हैं।

<package name="*" /> </packages> , doesn't work. 
<package name="com.*.*" /> doesn't work. 
<package name="com.abc.*" /> does work. 
+0

मैंने अभी तक किए गए परीक्षण से, निम्नलिखित कार्य भी करेंगे: ' <पैकेज नाम =" कॉम। * "/> ' –

+0

धन्यवाद डेव, ऐसा लगता है कि यह नियमित अभिव्यक्ति सरल वाइल्डकार्ड नहीं है। जैसे लुइस ने कहा, * सभी से मेल खाते हैं। तो कॉम। * com.abc के तहत किसी भी मैच से मेल खाएगा comabc.abc (बस अनुमान लगाएं) – nighteblis