Java 如何在int TestNG XML文件中配置为在包含3个测试的数据提供程序集中只运行一个测试

Java 如何在int TestNG XML文件中配置为在包含3个测试的数据提供程序集中只运行一个测试,java,testng,Java,Testng,如何在TestNG XML文件中配置为在包含3个测试的dataprovider集中只运行一个测试 对于一个简短的回归,我只想从dataprovider集中运行一个测试。例如,只有TC1。。只有当我需要运行一个完整的回归时,我才会运行所有的东西。有没有办法在testngxml中配置这个 @DataProvider(name = "testInternational") public Object[][] testInternational() { return new Object[][]

如何在TestNG XML文件中配置为在包含3个测试的dataprovider集中只运行一个测试

对于一个简短的回归,我只想从dataprovider集中运行一个测试。例如,只有TC1。。只有当我需要运行一个完整的回归时,我才会运行所有的东西。有没有办法在testngxml中配置这个

@DataProvider(name = "testInternational")
public Object[][] testInternational() {
    return new Object[][]{
            {"TC1", "Afghanistan",Abo},
            {"TC2", "Albanië",Abo},
            {"TC3", "Zwitserland",Abo},    
    };
}
class Test {

@Test(dataProvider = "testInternational")//To retry a failed test a few times
public void testInternational(String testcase, String country, String type) {
    open(url);
    //do something
}

**testngxml**

如果能够修改代码,则可以使用参数或环境变量:

@DataProvider(name = "testInternational")
@Parameters({ "indices" })
public Object[][] testInternational(String indices) {
    // Instead of parameters, you can use sys env
    // String[] ids = System.getProperty("indices").split(":");
    String[] ids = indices.split(":"); 
    Object[][] values = new Object[][]{
            {"TC1", "Afghanistan",Abo},
            {"TC2", "Albanië",Abo},
            {"TC3", "Zwitserland",Abo},    
    };
    Object[][] result = new Object[ids.length][];
    for (int i=0; i<ids.length; i++) {
       result[i] = values[Integer.parseInt(ids[i]);
    }
    return result;
}

然后可以通过
suite.xml
@Listeners
注释添加侦听器。

如果可以修改代码,可以使用参数或环境变量:

@DataProvider(name = "testInternational")
@Parameters({ "indices" })
public Object[][] testInternational(String indices) {
    // Instead of parameters, you can use sys env
    // String[] ids = System.getProperty("indices").split(":");
    String[] ids = indices.split(":"); 
    Object[][] values = new Object[][]{
            {"TC1", "Afghanistan",Abo},
            {"TC2", "Albanië",Abo},
            {"TC3", "Zwitserland",Abo},    
    };
    Object[][] result = new Object[ids.length][];
    for (int i=0; i<ids.length; i++) {
       result[i] = values[Integer.parseInt(ids[i]);
    }
    return result;
}

然后您可以通过
suite.xml
@Listeners
注释添加侦听器。

哇,太快了。谢谢我会这么做:)哇,太快了。谢谢我会这样做:)
<test name="TestDataProvider">
    <parameter name="Browser" value="firefox /> 
    <classes>
        <class name="Test"/>
          <methods>
            <parameter name="indices" value="0:2" />
            <include name="testInternational" />
        </methods>
    </classes>
</test>
public class MyAnnotationTransformer implements IAnnotationTransformer2 {
  [...empty methods...]

  public void transform(IDataProviderAnnotation annotation, Method method) {
    if (method.getName().equals("testInternational")) {
      // Custom way to find indices (sys properties?)
      annotation.setIndices(Collections.asList(0, 2));
    }
  }
}