2012-08-28 16 views
10

क्या testng.xml में कक्षाओं को बाहर करना संभव है?टेस्टएनजी में कक्षा को कैसे बाहर निकालना है?

मैं

<packages> 
    <package exclude="com.tt.ee"/> 
</packages> 

साथ करने की कोशिश की, लेकिन यह त्रुटि दे रही है।

+1

उत्तर यहां है - http://stackoverflow.com/questions/6209177/how-to-disable-entire-unit-test-in-testng –

+0

@JayBose बहिष्करण अक्षम करने जैसा नहीं है। जब परीक्षण को बाहर रखा जाता है, तब भी इसे एक अलग विन्यास में निष्पादित किया जा सकता है। किसी भी कॉन्फ़िगरेशन के लिए अक्षम परीक्षण निष्पादित नहीं किया जाएगा। – artdanil

उत्तर

6

यह इस तरह काम करना चाहिए:

<packages> 
    <package name="packageName"> 
     <exclude name="packageYouWantToExclude"></exclude> 
    </package> 
</packages> 
+0

इसलिए दोनों 'नाम' विशेषता में मुझे पैकेज नाम देने की आवश्यकता है – user522170

+0

हाँ आपको वह पैकेज देने की ज़रूरत है जिसे आप चलाने के लिए चाहते हैं और जिसे आप चलाने के लिए नहीं चाहते हैं – Tarken

7

TestNG dtd के अनुसार, exclude तत्व निम्नलिखित तत्वों के लिए एक ही लागू होता है:

  • पैकेज - संकुल सूची के भीतर पैकेज विवरण।
  • विधियां - इस परीक्षण से शामिल/बहिष्कृत करने के तरीकों की सूची।
  • रन - समूह के उप-समूह को परिभाषित करने के लिए उपयोग किया जाता है कि कौन से समूह चलाना चाहिए।

तत्व classes और class सीधे बाहर नहीं छोड़े जा सकते हैं; हालांकि, आप समूहों के माध्यम से कक्षाएं बाहर कर सकते हैं:

@Test(groups = { "ClassTest1" }) 
public class Test1 { 

    public void testMethod1() { 
    } 

    public void testMethod2() { 
    } 

} 

तो फिर तुम testng.xml परिभाषित करेगा:

<suite> 
    <test> 
    <groups> 
     <run> 
     <exclude name="ClassTest1"/> 
     </run> 
    </groups> 
    <classes> 
     <class name="Test1"> 
    </classes> 
    </test> 
</suite> 

ज्यादातर मामलों आप को परिभाषित है, जो कक्षाएं चलाने के लिए शामिल करने के लिए बाहर करने के लिए नहीं, तो बस उन वर्गों को शामिल करें जिन्हें आप चलाना चाहते हैं।

0

testng.xml हालांकि टेस्ट क्लास को छोड़ने का कोई सीधा तरीका नहीं है। हालांकि वहां वर्कअराउंड है जो विशेष टेस्ट क्लास को अनदेखा करने के लिए उपयोग किया जा सकता है।

  1. परीक्षा वर्ग को सार के रूप में घोषित करें।
  2. कार्यान्वयन IAnnotationTransformer श्रोता इंटरफ़ेस लागू करें और अपने कस्टम एनोटेशन के साथ चिह्नित किसी विशेष श्रेणी में सभी परीक्षण विधियों के लिए सक्षम = सेट करें।

एक ही विषय TestNG-उपयोगकर्ता समूह में चर्चा की, लेकिन कोई सीधा जवाब मेल धागा उल्लेख - Re: [TestNG उपयोगकर्ताओं] TestNG

1

आप classfilesetref का उपयोग करें और वर्गों की सूची निर्धारित कर सकते हैं में एक वर्ग पर ध्यान न दें आप दौड़ना चाहते हैं

<fileset id="test.classes" dir="${test.classes.dir}" casesensitive="yes"> 
    <exclude name="**/ExcludeClass.java" /> 
</fileset> 

<testng [...]> 
    <!-- your setting here --> 
    <classfilesetref refid="test.classes"/> 
</testng> 
1

सही परीक्षण आप को चलाने के लिए नहीं करना चाहते हैं के बाद (groups = { "anyName"}) जोड़ें, ताकि की तरह लग रहे हो जाएगा:

@Test(groups = { "group1"}) 
public void methodTestName(){.. 
} 

और अपने xml फ़ाइल में से जोड़ने के तुरंत बाद test name="..."

<groups> 
     <run> 
      <exclude name="group1" /> 
     </run> 
    </groups> 

(groups = { "group1"}) के साथ विधियों को नहीं चलाया जाएगा। इस तरह मेरे लिए काम करता है। याद रखें कि आप कक्षा, केवल पैकेज, विधियों को बाहर नहीं कर सकते हैं और चलाते हैं। शुभकामनाएं

1

मुझे एक ही समस्या थी!

<classes> 
     <class name="brms.impl.BrmsServicesFactoryTest" /> 
<!--   <class name="brms.impl.ServicesFactoryTest" /> --> 
    </classes> 

इस मामले में, केवल वर्ग BrmsServicesFactoryTest परीक्षण क्रियान्वित कर रहे हैं, अन्य वर्ग परीक्षण निष्पादित नहीं: वैसे भी, समाधान मैंने पाया टैग कक्षाएं उपयोग कर रहा है संकुल के बजाय यह मेरा testng.xml फ़ाइल है!

मुझे उम्मीद है कि यह आपकी मदद कर सकता है!

0

समाधान के रूप में आप नाम के साथ प्रत्येक परीक्षा के लिए छद्म समूह जोड़ सकते हैं,

public class TestNGAnnotationTransformer implements IAnnotationTransformer { 

@Override 
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { 
    if (testMethod == null || annotation == null) { 
     return; 
    } 

    String pseudoGroupClass = testMethod.getDeclaringClass().getSimpleName(); 
    String pseudoGroupMethod = pseudoGroupClass + "." + testMethod.getName(); 

    String[] existingGroups = annotation.getGroups(); 
    String[] extendedGroups; 
    if (existingGroups == null) { 
     extendedGroups = new String[] { pseudoGroupClass, pseudoGroupMethod }; 
    } else { 
     List<String> tmp = new ArrayList<String>(); 
     for (String group : existingGroups) { 
      tmp.add(group); 
     } 
     tmp.add(pseudoGroupClass); 
     tmp.add(pseudoGroupMethod); 
     extendedGroups = tmp.toArray(new String[0]); 
    } 

    annotation.setGroups(extendedGroups); 
} 

}

एनोटेशन ट्रांसफार्मर के माध्यम से परीक्षा पद्धति या परीक्षण वर्ग के बराबर होती है और अपने testng.xml में इसका इस्तेमाल

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="My tests"> 
    <test name="tests" enabled="true"> 
     <groups> 
      <run> 
       <include name="My Group"/> 
       <include name="MySuperClass"/> 
       <exclude name="MySuperClass.badMethod"/> 
       <exclude name="DontLikeThisClassAnymore"/> 
      </run> 
     </groups> 

     <packages> 
      <package name="com.mycompany.*"/> 
     </packages> 
    </test> 

    <listeners> 
     <listener class-name="com.mycompany.TestNGAnnotationTransformer"/> 
    </listeners> 
</suite> 
संबंधित मुद्दे

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