2016-04-22 9 views
1

別のJavaクラスからTestNGテストを実行する方法はありますか?別のクラスからTestNGテストを実行する

@Test 
public void f(Integer n, String s) { 
} 

私は異なる引数を持つ単一のスイートで同じメソッドを実行する必要があります。(内部ループのために)

ことは可能ですか?

また、dataproviderメソッドはObject[][]を返す必要があります。これは2つの引数を持つメソッドでうまく動作します。私たちは2つ以上の議論を送ることができますか?

@DataProvider 
public Object[][] dp() { 
    return new Object[][] { new Object[] { 1, "a" }, new Object[] { 2, "b" }, }; 
} 

@Test(dataProvider = "dp") 
public void f(Integer n, String s, char c, double d, String s2) { 
} 

私はいくつかのTestNGクラスIは、1回@Testを有する方法を実行するためのコードの下に使用

public static void main(String[] args) { 

    List<XmlClass> classes = new ArrayList<>(); 
    classes.add(new XmlClass("com.test.PortalTest")); 

    XmlSuite suite = new XmlSuite(); 
    suite.setName("Portal Test Suite"); 

    XmlTest test = null; 
    for (int index = 0; index < 7; index++) { 
     test = new XmlTest(); 
     test.setName("Portal Test - " + index); 
     test.setXmlClasses(classes); 
     test.addParameter("downloadFileIndex", String.valueOf(index)); 
     suite.addTest(test); 
    } 

    List<XmlSuite> suites = new ArrayList<XmlSuite>(); 
    suites.add(suite); 

    TestListenerAdapter testListenerAdapter = new TestListenerAdapter(); 

    TestNG testNG = new TestNG(); 
    Class[] classesClasses = {PortalTest.class}; 
    testNG.setTestClasses(classesClasses); 
    testNG.setXmlSuites(suites); 
    testNG.addListener(testListenerAdapter); 
    testNG.run(); 

    System.out.println("Passed : " + testListenerAdapter.getPassedTests()); 
    System.out.println("Failed : " + testListenerAdapter.getFailedTests()); 
    System.out.println("Skipped : " + testListenerAdapter.getSkippedTests()); 

} 

を使用してそれを実行しようとしています。同じテストで@Testメソッドを複数回実行するにはどうすればいいですか?

TestListenerAdapter tla = new TestListenerAdapter(); 
TestNG testng = new TestNG(); 
testng.setTestClasses(new Class[] { PortalTest.class }); 
testng.addListener(tla); 
testng.run(); 

答えて

0
  1. TestNGのテスト方法はpublicはそうあなたが別のテストクラスから任意のテストクラスのインスタンスをインスタンス化することができますし、単に別のテストクラスから必要なメソッドを呼び出す常にあります。
  2. TestNGデータプロバイダは、配列の配列Object[][]または配列のイテレータ(Iterator<Object[]>)を返す必要があります。したがって、必要な数の引数を確実に使用できます。

@DataProvider 
public Object[][] dp() { 
    return new Object[][] { 
      new Object[] { 1, "a", 'x', 3.14, "pi" }, 
      new Object[] { 2, "b", 'y', 6.28, "tau" }, 
    }; 
} 

@Test(dataProvider = "dp") 
public void f(Integer n, String s, char c, double d, String s2) { 
    new OtherTestClass().f(n, s); 
} 
+0

私は日食のようにテストする必要があります。右クリック - > Run As - > TestNGテストを実行し、レポートを生成します。このアクションは、 'TestNg'、' Suite'、 'Test'や' testNg.run() 'のようなクラスを使ってjavaを使って行うことができますか? – Venkatesh

+0

は' Object [] [] 'を動的に作成する方法はありますか? – Venkatesh

+0

一連のテストをプログラムで実行する場合は、http://testng.org/doc/documentation-main.html#running-testng-programmatically – mfulton26