2011-03-23 67 views
2

我使用編程方式來運行包含在Courier類中的測試。測試NG - 傳遞參數setTestClasses()

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

如何將參數傳遞給此類中包含的測試? 例如

testng.setTestClasses(new Class[] { Courier("parameter").class }); 

速遞:

public class Courier { 
@Parameter(passed parameter) 
@Test 
public void Courier_Test(String parameter){ 
    System.out.println(parameter); 
} 

}

謝了任何幫助!

回答

2

一對夫婦的想法:

即使你是編程運行測試,你應該能夠調用TestNG的一個testng.xml文件。參數添加到文件像這樣(從documentation):

<suite name="My suite"> 
    <parameter name="parameter" value="Foo"/> 
    <test name="Courier Test" /> 
    <...> 

如果由於某種原因,你不使用的testng.xml文件,你可以使用DataProvider的,無論是作爲內部的方法測試類或靜態類,這取決於你需要做什麼。以下示例(也來自documentation)。

DataProvider中的類中:

//This method will provide data to any test method that declares 
//that its Data Provider is named "test1" 
@DataProvider(name = "test1") 
public Object[][] createData1() { 
    return new Object[][] { 
    new Object[] { "Parameter" } 
    } 
} 

//This test method declares that its data should be supplied 
//by the Data Providernamed "test1" 
@Test(dataProvider = "test1") 
public void Courier_Test(String parameter) { 
System.out.println(parameter); 
} 

DataProvider的外部類:

public static class StaticProvider { 
    @DataProvider(name = "create") 
    public static Object[][] createData() { 
    return new Object[][] { 
     new Object[] { "Parameter" } 
    } 
    } 
} 

public class Courier { 
    @Test(dataProvider = "create", dataProviderClass = StaticProvider.class) 
    public void Courier_Test(String parameter) { 
    // ... 
    } 
} 
+0

這些都是正確的建議。請注意,如果您想要使用testng.xml路徑,則可以在內存中創建此文件(查找適用於XmlSuite,XmlTest等的Javadoc)。 – 2011-03-23 22:47:39