Test NG - передать параметр с помощью setTestClasses () - PullRequest
2 голосов
/ 23 марта 2011

Я использую программный подход для запуска тестов, включенных в класс 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 Ответ

2 голосов
/ 23 марта 2011

Пара идей:

Даже если вы запускаете тесты программно, вы должны иметь возможность вызывать TestNG для файла testng.xml. Добавьте параметры в файл следующим образом (из документации ):

<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) {
    // ...
  }
}
...