2011-03-23 54 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