我正在使用以编程方式运行Courier类中包含的测试。
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { Courier.class });
testng.addListener(tla);
testng.run();
如何将参数传递给此类中包含的测试? e.g。
testng.setTestClasses(new Class[] { Courier("parameter").class });
快递:
public class Courier {
@Parameter(passed parameter)
@Test
public void Courier_Test(String parameter){
System.out.println(parameter);
}
}
感谢任何帮助!
答案 0 :(得分:2)
一些想法:
即使您以编程方式运行测试,也应该能够在testng.xml
文件上调用TestNG。像这样添加参数(来自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) {
// ...
}
}