Ist es möglich, Klassen in testng.xml auszuschließen?Wie Klasse in TestNG ausschließen?
Ich habe versucht, mit
<packages>
<package exclude="com.tt.ee"/>
</packages>
aber es gibt Fehler.
Ist es möglich, Klassen in testng.xml auszuschließen?Wie Klasse in TestNG ausschließen?
Ich habe versucht, mit
<packages>
<package exclude="com.tt.ee"/>
</packages>
aber es gibt Fehler.
Es sollte so funktionieren:
<packages>
<package name="packageName">
<exclude name="packageYouWantToExclude"></exclude>
</package>
</packages>
also in beiden 'name' Attribut muss ich Paketnamen geben – user522170
yeah Sie müssen das Paket, das Sie ausführen möchten und das, das Sie nicht ausführen möchten – Tarken
Nach dem TestNG dtd, das exclude
Element ist nur für die folgenden Elemente:
Die Elemente classes
und class
können nicht direkt ausgeschlossen werden;
@Test(groups = { "ClassTest1" })
public class Test1 {
public void testMethod1() {
}
public void testMethod2() {
}
}
Dann definieren Sie die testng.xml: Sie jedoch Klassen durch Gruppen ausschließen
<suite>
<test>
<groups>
<run>
<exclude name="ClassTest1"/>
</run>
</groups>
<classes>
<class name="Test1">
</classes>
</test>
</suite>
In den meisten Fällen Sie definieren, die Klassen für den Lauf zu schließen, nicht auszuschließen, Fügen Sie also nur die Klassen ein, die Sie ausführen möchten.
Es gibt keine direkte Möglichkeit, die Testklasse zu überspringen, obwohl die Datei testng.xml vorhanden ist. Es gibt jedoch eine Problemumgehung, mit der bestimmte Testklassen ignoriert werden können.
Das gleiche Thema in testng-Benutzergruppe diskutiert, aber keine direkte Antwort des Mail-Thread verweisen - Re: [testng-users] eine Klasse in testng Ignorieren
Sie classfilesetref nutzen könnten und die Liste der Klassen definieren du willst laufen.
<fileset id="test.classes" dir="${test.classes.dir}" casesensitive="yes">
<exclude name="**/ExcludeClass.java" />
</fileset>
<testng [...]>
<!-- your setting here -->
<classfilesetref refid="test.classes"/>
</testng>
hinzufügen (groups = { "anyName"})
direkt nach Tests, die Sie nicht wollen, laufen, so wird es aussehen werden:
@Test(groups = { "group1"})
public void methodTestName(){..
}
Und als in Ihrem XML-Datei fügen Sie einfach nach test name="..."
<groups>
<run>
<exclude name="group1" />
</run>
</groups>
Methoden mit (groups = { "group1"})
werden nicht ausgeführt. Dieser Weg funktioniert für mich. Denken Sie daran, dass Sie nicht Klasse, nur Paket, Methoden und ausführen können. Viel Glück
Ich hatte das gleiche Problem!Wie auch immer, die Lösung, die ich gefunden, den Tag wird mit Klassen statt Paketen dies ist meine testng.xml Datei:
<classes>
<class name="brms.impl.BrmsServicesFactoryTest" />
<!-- <class name="brms.impl.ServicesFactoryTest" /> -->
</classes>
in diesem Fall nur die Klasse BrmsServicesFactoryTest Tests ausgeführt werden, die anderen Tests, Klassenarbeiten nicht ausgeführt!
Ich hoffe, das könnte Ihnen helfen!
Als Abhilfe können Sie Pseudo-Gruppen zu den einzelnen Test mit Name, gleich Testmethode oder Testklasse über Annotation Transformator
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);
}
}
und verwenden Sie es in Ihrem 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>
Die Antwort ist hier - http://stackoverflow.com/questions/6209177/how-to-disable-entire-unit-test-in-testng –
@JayBose Excluding ist nicht das gleiche wie deaktivieren. Wenn der Test ausgeschlossen ist, kann er immer noch in einer anderen Konfiguration ausgeführt werden. Deaktivierter Test wird für keine Konfiguration ausgeführt. – artdanil