Java testng中数据提供者的懒散加载

Java testng中数据提供者的懒散加载,java,testng,testng-dataprovider,Java,Testng,Testng Dataprovider,我试图为我的测试实现数据提供者的延迟加载,但它不起作用。下面是我的工厂注释方法的代码片段: import java.util.Iterator; import org.testng.annotations.AfterClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Factory; import org.testng.annotations.Test; public class T

我试图为我的测试实现数据提供者的延迟加载,但它不起作用。下面是我的工厂注释方法的代码片段:

import java.util.Iterator;

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

public class TF
{
    @DataProvider(name="TestInstances")
    public static Iterator<Object> testInstancesDP()
    {
        return new Iterator<Object>()
        {
            int counter=1;
            int MAX;
            {
                MAX=4;
            }

            @Override
            public boolean hasNext()
            {
                return counter<=MAX;
            }

            @Override
            public Object next()
            {
                System.out.println("passing "+counter+" iterator instance");
                return new Object[] {counter++};
            }

            @Override
            public void remove()
            {
                //TODO: IllegalOperationException
            }
        };
    }

    private int order;

    @Factory(dataProvider="TestInstances",dataProviderClass=TF.class)
    public TF(int order)
    {
        this.order=order;
        System.out.println("TF Instance created : "+order);
    }

    @DataProvider
    public Iterator<Object> testDataProvider()
    {
        return new Iterator<Object>()
        {
            int counter=1;
            int MAX;
            {
                MAX=TF.this.order;
            }

            @Override
            public boolean hasNext()
            {
                return counter<=MAX;
            }

            @Override
            public Object next()
            {
                System.out.println("passing "+counter+" as DP");
                return new Object[] {"DP"+counter++};
            }

            @Override
            public void remove()
            {
                //TODO: IllegalOperationException
            }

        };
    }

    @Test(dataProvider="testDataProvider")
    public void testStepExecutor(String str)
    {
        System.out.println("Test method execution : "+str);
    }

    @AfterClass
    public void tearDown()
    {
        System.out.println("Tear Down: "+this.order);
    }

    /**
     * @return the order
     */
    public int getOrder()
    {
        return order;
    }
}
import java.util.Iterator;
导入org.testng.annotations.AfterClass;
导入org.testng.annotations.DataProvider;
导入org.testng.annotations.Factory;
导入org.testng.annotations.Test;
公共类TF
{
@数据提供程序(name=“TestInstances”)
公共静态迭代器testInstancesDP()
{
返回新的迭代器()
{
int计数器=1;
int MAX;
{
最大值=4;
}
@凌驾
公共布尔hasNext()
{

返回计数器数据提供程序的懒散加载不适用于Factory,因为TestNG当前正在运行测试之前调用所有Factory方法。

正如我所见,它仍然以相同的方式工作。是否有任何解决方法?没有,我不知道是否可以更改它。但您可以在现有票证上请求该功能