क्या testng.xml में कक्षाओं को बाहर करना संभव है?टेस्टएनजी में कक्षा को कैसे बाहर निकालना है?
मैं
<packages>
<package exclude="com.tt.ee"/>
</packages>
साथ करने की कोशिश की, लेकिन यह त्रुटि दे रही है।
क्या testng.xml में कक्षाओं को बाहर करना संभव है?टेस्टएनजी में कक्षा को कैसे बाहर निकालना है?
मैं
<packages>
<package exclude="com.tt.ee"/>
</packages>
साथ करने की कोशिश की, लेकिन यह त्रुटि दे रही है।
यह इस तरह काम करना चाहिए:
<packages>
<package name="packageName">
<exclude name="packageYouWantToExclude"></exclude>
</package>
</packages>
इसलिए दोनों 'नाम' विशेषता में मुझे पैकेज नाम देने की आवश्यकता है – user522170
हाँ आपको वह पैकेज देने की ज़रूरत है जिसे आप चलाने के लिए चाहते हैं और जिसे आप चलाने के लिए नहीं चाहते हैं – Tarken
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>
ज्यादातर मामलों आप को परिभाषित है, जो कक्षाएं चलाने के लिए शामिल करने के लिए बाहर करने के लिए नहीं, तो बस उन वर्गों को शामिल करें जिन्हें आप चलाना चाहते हैं।
testng.xml हालांकि टेस्ट क्लास को छोड़ने का कोई सीधा तरीका नहीं है। हालांकि वहां वर्कअराउंड है जो विशेष टेस्ट क्लास को अनदेखा करने के लिए उपयोग किया जा सकता है।
एक ही विषय TestNG-उपयोगकर्ता समूह में चर्चा की, लेकिन कोई सीधा जवाब मेल धागा उल्लेख - Re: [TestNG उपयोगकर्ताओं] TestNG
आप 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>
सही परीक्षण आप को चलाने के लिए नहीं करना चाहते हैं के बाद (groups = { "anyName"})
जोड़ें, ताकि की तरह लग रहे हो जाएगा:
@Test(groups = { "group1"})
public void methodTestName(){..
}
और अपने xml फ़ाइल में से जोड़ने के तुरंत बाद test name="..."
<groups>
<run>
<exclude name="group1" />
</run>
</groups>
(groups = { "group1"})
के साथ विधियों को नहीं चलाया जाएगा। इस तरह मेरे लिए काम करता है। याद रखें कि आप कक्षा, केवल पैकेज, विधियों को बाहर नहीं कर सकते हैं और चलाते हैं। शुभकामनाएं
मुझे एक ही समस्या थी!
<classes>
<class name="brms.impl.BrmsServicesFactoryTest" />
<!-- <class name="brms.impl.ServicesFactoryTest" /> -->
</classes>
इस मामले में, केवल वर्ग BrmsServicesFactoryTest परीक्षण क्रियान्वित कर रहे हैं, अन्य वर्ग परीक्षण निष्पादित नहीं: वैसे भी, समाधान मैंने पाया टैग कक्षाएं उपयोग कर रहा है संकुल के बजाय यह मेरा testng.xml फ़ाइल है!
मुझे उम्मीद है कि यह आपकी मदद कर सकता है!
समाधान के रूप में आप नाम के साथ प्रत्येक परीक्षा के लिए छद्म समूह जोड़ सकते हैं,
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>
उत्तर यहां है - http://stackoverflow.com/questions/6209177/how-to-disable-entire-unit-test-in-testng –
@JayBose बहिष्करण अक्षम करने जैसा नहीं है। जब परीक्षण को बाहर रखा जाता है, तब भी इसे एक अलग विन्यास में निष्पादित किया जा सकता है। किसी भी कॉन्फ़िगरेशन के लिए अक्षम परीक्षण निष्पादित नहीं किया जाएगा। – artdanil