2016-04-19 8 views
0

Ich versuche, testng.xml programmgesteuert zu erstellen. Ich benutze unten Java CodeTestNG - spezifische Tests programmgesteuert ausführen

public static createTestSuit(String testClass){ 
    XmlSuite suite = new XmlSuite(); 
    suite.setName("My Suite"); 
    XmlTest test = new XmlTest(suite); 
    test.setName("My Test"); 
    List<XmlClass> classes = new ArrayList<XmlClass>(); 
    classes.add(new XmlClass(testClass)); 
    test.setXmlClasses(classes) ; 
    List<XmlSuite> suites = new ArrayList<XmlSuite>(); 
    suites.add(suite); 
    TestNG tng = new TestNG(); 
    tng.setXmlSuites(suites); 
    tng.run(); 
} 

Die Klasse 'testClass' enthält mehrere Testmethoden. Ich möchte nicht alle diese Methoden ausführen. Wie kann ich nur die Testmethodennamen angeben, die ich in obigem Code ausgeführt werden soll, so dass das obige Verfahren so etwas wie

public static createTestSuit(String testClass, List<String> testCasesID){ 
     //code 
} 

Hinweis aussehen sollte:

@Test(testName="testCaseID") 
    public void test1(){ 
    } 

Antwort

3

Meine Testmethoden sind in Form Verwenden Sie XmlInclude, um nur die Testmethoden einzuschließen, die Sie möchten.

Wenn die Include-Methodenliste nicht definiert oder leer ist, führt TestNG alle Tests in einer Klasse aus. Andernfalls werden nur die enthaltenen Tests nach ihren Methodennamen ausgeführt.

+0

Dieser Code funktioniert gut, aber ist es eine Möglichkeit, ‚Testname‘ anstelle von Methodennamen mit ‚includeMethods‘ angeben? – stackoverflow

+0

@curious Ich bin mir nicht sicher, ob testNG diese Funktion hat, da es keine Garantie gibt, dass Sie all Ihren Tests eindeutige Namen geben. Sie können die Klassen jedoch immer selbst durchlaufen, die gewünschten Methoden anhand ihrer Anmerkungen finden und diese Methoden an TestNG übergeben – SimY4

0

Sie den Test überspringen können Annotation mit aktiviert false =

@Test(testName="testCaseID" enabled="false") 
public void test1(){ 
    //code here.. 
} 
Verwandte Themen