Java TestNG:在dataProvider的一次迭代之后转到下一个测试

Java TestNG:在dataProvider的一次迭代之后转到下一个测试,java,selenium,testng,Java,Selenium,Testng,因此,我有两个测试,一个是检查注册test01\u sign,如果通过,它将进入第二个测试test02\u checknewstandements,它检查主页元素的可见性,唯一的问题是第一个测试有一个如下所示的数据提供程序: @Test(dataProvider = "Data") public void test01_signIn(String idMedia, String nomMedia, String idSSO, String mdpSSO, String lien) {

因此,我有两个测试,一个是检查注册
test01\u sign
,如果通过,它将进入第二个测试
test02\u checknewstandements
,它检查主页元素的可见性,唯一的问题是第一个测试有一个如下所示的数据提供程序:

@Test(dataProvider = "Data")
public void test01_signIn(String idMedia, String nomMedia, String idSSO, String mdpSSO, String lien) {
     //Test
}

@Test
public void test02_CheckNewsStandElements(){
    WebDriverWait wait = new WebDriverWait(driver,5);
    WebElement modalCloseButton = null;
    modalCloseButton = nsp.modalCloseButton(driver);
    try{
        wait.until(ExpectedConditions.visibilityOf(modalCloseButton));
    }catch(TimeoutException e){
        System.out.println("The Element isn't visible");
    }
}

@DataProvider(name="Data")
public Object [][] getLists() throws IOException, GeneralSecurityException {
    Object [][] objects = newEDLI.importData().clone();
    return objects;
}
我得到的结果更像是:

Test1
Test1
Test1
...
Test2
Test2
Test2
当我在寻找这样的结果时:

Test1 Test2 Test1 Test2

当您使用
@DataProvider
TestNg将数据注入测试方法时,TestNg将在一行中运行此方法,其数量是您拥有的数据的两倍。此外,测试方法之间没有依赖关系。因此,您的
test01\u登录
独立于
test02\u CheckNewsStandElements
执行

您可以考虑使用<代码> @工厂>代码>来组织执行顺序。在这种情况下,您将数据注入测试类构造函数(数据提供程序应该是静态的),并且您能够管理测试方法执行的顺序:

公共类FactoryTest{
私有媒体;
私人媒体;
//…您的其他数据
@工厂(dataProvider=“Data”)
public FactoryTest(字符串idMedia、字符串nomMedia等){
this.idMedia=idMedia;
this.nomMedia=nomMedia;
//设置其余字段
}
@数据提供者(name=“Data”)
公共静态对象[]getList(){
返回newEDLI.importData().clone();
}
@试验
公共无效测试01_signIn(){
//使用来自类成员的数据
}
@测试(dependsOnMethods=“test01\u sign”)
public void test02_CheckNewsStandElements(){
WebDriverWait wait=新的WebDriverWait(驱动程序,5);
WebElement modalCloseButton=null;
modalCloseButton=nsp.modalCloseButton(驱动程序);
试一试{
等待.直到(预期条件.可视性)(modalCloseButton));
}捕获(超时异常e){
System.out.println(“元素不可见”);
}
}
}

注意:尽管测试将以正确的顺序执行,但在测试报告中,它们仍将被分组和排序

谢谢您的回答,但在运行测试后,它显示了一个错误:未找到任何测试。@Xerox9000,您如何运行测试?我有一个testng.xml文件,作为套件测试运行,其中当然包含我的类名。我想您需要检查数据提供程序。我用
@Factory(dataProvider=“Data”)
创建了一个示例测试类,这对我来说很好。但是,我的测试数据是用
newobject[]{…}