2016-04-19 8 views
0

プログラムでtestng.xmlを作成しようとしています。私は以下のJavaコードを使用しますTestNG - 特定のプログラムをプログラムで実行する

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(); 
} 

クラス 'testClass'にはいくつかのテストメソッドが含まれています。私はこれらの方法をすべて実行したくありません。上記の方法は

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

ノートのようになりますように、どのように私は、私は上記のコードで実行したいだけのテストメソッド名を指定することができます私のテストメソッドは、フォーム

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

答えて

3

でありますXmlIncludeを使用して、必要なテストメソッドのみを含める。

XmlClass xmlClass = new XmlClass(""); 
List<XmlInclude> includeMethods = new ArrayList<>(); 
includeMethods.add(new XmlInclude("test1")); 
xmlClass.setIncludeMethods(includeMethods); 

includeメソッドのリストが定義されていないか、空の場合、TestNGはクラス内のすべてのテストを実行します。それ以外の場合は、メソッド名で含まれるテストのみが実行されます。

+0

このコードは正常に動作しますが、「includeMethods」と「テスト名」の代わりのメソッド名を指定する方法はありますか? – stackoverflow

+0

@curiousすべてのテストに一意の名前を付ける保証はないので、testNGにこの機能があるかどうかはわかりません。しかし、あなたはいつも自分でクラスをたどることができ、それらのアノテーションで必要なメソッドを見つけてそれらのメソッドをTestNGに渡すことができます – SimY4

0

アノテーションを使用してテストをスキップすることができますが有効になって= falseを

@Test(testName="testCaseID" enabled="false") 
public void test1(){ 
    //code here.. 
} 
関連する問題