使用setTestClasses()传递参数的TestNG - 如何在测试中传递参数?

3
我正在使用编程方法来运行Courier类中包含的测试。
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);
}   

感谢您的帮助!

1个回答

3

几个建议:

即使您是以编程方式运行测试,也应该能够在 testng.xml 文件上调用 TestNG。按照以下方式向文件添加参数(来源于文档):

<suite name="My suite">
   <parameter name="parameter"  value="Foo"/>
   <test name="Courier Test" />
   < ... >
如果由于某些原因您没有使用testng.xml文件,则可以使用DataProvider作为测试类中的方法或静态类,具体取决于您需要做什么。下面是示例(也来自文档)。
类内部的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) {
    // ...
  }
}

这些都是正确的建议。请注意,如果想要使用testng.xml路线,可以在内存中创建此文件(查阅XmlSuite、XmlTest等的Javadoc)。 - Cedric Beust

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接