嗨我想在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不会运行。
答案 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