Java 对dataprovider的一次迭代运行所有测试,依此类推,直到data provider中的数据结束

Java 对dataprovider的一次迭代运行所有测试,依此类推,直到data provider中的数据结束,java,selenium,selenium-webdriver,testng,testng-dataprovider,Java,Selenium,Selenium Webdriver,Testng,Testng Dataprovider,实际上,数据提供者有日期和品牌名称,所以我的第一个@test只能选择日期和品牌名称,然后在第二个@test中,它将根据相同的日期和品牌名称获取数据,在第二次迭代中,第一个@test从@dataprovider获取第二个日期和第二个品牌名称,然后第二个@test将自己完成工作,等等,请帮助我 提前谢谢。 举例如下: `@DataProvider public static Object[][] dp() { return new Object[][] { new Objec

实际上,数据提供者有日期和品牌名称,所以我的第一个@test只能选择日期和品牌名称,然后在第二个@test中,它将根据相同的日期和品牌名称获取数据,在第二次迭代中,第一个@test从@dataprovider获取第二个日期和第二个品牌名称,然后第二个@test将自己完成工作,等等,请帮助我 提前谢谢。 举例如下:

`@DataProvider
  public static Object[][] dp() {
    return new Object[][] {
      new Object[] { "23", "Online" },
      new Object[] { "24", "Online" },
    };
  }
@Test(dataProvider = "dp")
  public void DateAndBrand(String date,String game) throws InterruptedException{
System.out.println(date"  "+game)
}
@Test
  public void CheckDifference(){
System.out.println("in second Test");
} 
<suite name="Automation" parallel="false">
<test name="Data Difference">
<classes>
 <class name="monitoring.DataCompareAuto">
  <methods>
        <include name="DateAndBrand"/>
        <include name="CheckDifference" />
    </methods>
  </class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
我希望输出类似于:

23  Online 
in second Test
24  Online
in second Test
我的testng.xml文件如下所示:

`@DataProvider
  public static Object[][] dp() {
    return new Object[][] {
      new Object[] { "23", "Online" },
      new Object[] { "24", "Online" },
    };
  }
@Test(dataProvider = "dp")
  public void DateAndBrand(String date,String game) throws InterruptedException{
System.out.println(date"  "+game)
}
@Test
  public void CheckDifference(){
System.out.println("in second Test");
} 
<suite name="Automation" parallel="false">
<test name="Data Difference">
<classes>
 <class name="monitoring.DataCompareAuto">
  <methods>
        <include name="DateAndBrand"/>
        <include name="CheckDifference" />
    </methods>
  </class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

每当我们使用带有
@Test
注释的dataProvider属性时,该方法被调用的次数等于
@dataProvider
返回的数组中的对象数

要实现所引用的输出,可以使用
ITestListener
接口或
TestListenerAdapter

使用这些监听器,您可以截取开始、成功、失败等测试方法。您可以在那里执行任何操作

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

public class TestInterceptor implements ITestListener {
    @Override
    public void onFinish(ITestContext arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onStart(ITestContext arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestFailure(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestSkipped(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestStart(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestSuccess(ITestResult arg0) {
        System.out.println(" Can perform CheckDifference operation here.");

    }

}
因此,在这种情况下,您的输出将是

23  Online
 Can perform CheckDifference operation here.
24  Online
 Can perform CheckDifference operation here.
in second Test
 Can perform CheckDifference operation here.

请记住在testng.xml文件中添加侦听器

谢谢,它工作得很好,但在我的代码中,当我编写@Override public void onTestSuccess(ITestResult arg0){driver.findelelements(By.tagName(“tr”);}时,它给出了一个异常,因为找到了noelement。这是因为java编译器。项目的java编译器版本必须早于1.6。从项目>生成路径将其更改为最新的编译器版本。如果有帮助,请告诉我。没有java编译器版本是1.8。它不起作用。我将标签添加到标签的正上方。这是正确的纠正方法吗?如果有其他方式,请提供帮助请查看以下链接