如果数据提供者为空,则停止testNG的测试执行

时间:2013-12-16 10:12:31

标签: automated-tests testng

嗨我想在dataprovider中没有数据时停止进一步的测试执行。我的数据提供程序动态地动态填充。所以如果dataprovider中没有数据,我希望我的测试停止执行。以下是我的代码段。

package myTest;

import org.testng.Reporter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;

public class NewTest
{
    String str;
    @DataProvider
    public Object[][] test123()
    {
        System.out.println(" Filling dataprovider.");
        return new Object[][]{};
    }

    @Factory(dataProvider="test123")
    public NewTest(String str)
    {
        System.out.println("Running through factory.");
        this.str=str;
    }

    @Test
    public void test1234()
    {
        Reporter.log("--->>> running test "+str,true);
    }
}

如果dataprovider为空,我希望test1234不会运行。

2 个答案:

答案 0 :(得分:0)

您可以尝试在其他类中添加其他方法并添加Factory 关于那个的注释。通过此方法,您可以调用此Test Class的构造函数以执行测试。在调用构造函数之前,检查参数是否正确,并且您确实要为此参数运行测试。现在你需要调用这个Factory类。

<code>

Class NewTestFactory(){

@Factory(dataProvider="test123")    
public Object[] executeTests(String str){
Object obj[] = new Object[1];

        if (str != null){
        obj[0] = new NewTest(str)
        }
    }
  return obj
}

</code>

答案 1 :(得分:0)

只需返回一个空的2D数组。 类似的东西:

 @DataProvider
    public Object[][] test123()
    {
        Object[][] data= null;
        System.out.println(" Filling dataprovider.");
        if(someSplCondition) //Returning empty 2D so that test doesn't execute
             data =  Object[0][0]
        else
             data = fillTestData()

        return data;
    }

另外,如果你正在使用maven,请不要忘记在mvn命令中输入-DfailIfNoTests = false