如何确保DataProvider仅在不使用Factory的情况下初始化一次?

时间:2015-12-07 02:29:30

标签: testng testng-dataprovider

我有一个测试类,其中所有方法都使用相同的DataProvider。我想要DataProvider并行化。我不能使用Factory方法,因为TestNg中有一个defect,这使我无法使用它。

现在,为每个使用它的方法重新计算数据提供程序。使用工厂可以解决这个问题,除了我需要工厂生成的测试类的每个实例中的所有方法都在SAME线程中运行。 TestNG存在一个突出的缺陷,即逐个实例不起作用。我尝试使用旧版本的TestNG,但我尝试的每个版本都有缺陷。在我开始失去我需要的其他功能之前,我只能走得那么远。

我还需要DataProvider并行运行 - 也就是说,测试类中的所有方法都应该为所提供的每组数据并行运行。是否有一些解决方法可用于确保DataProvider只初始化一次并且提供程序是多线程的?

另一个问题是当我使用没有Factory的并行DataProvider时,每个测试方法都在一个单独的线程中运行。我想要的是测试类中的所有方法都在SAME线程中为提供程序中的每个数据集运行,并且每个数据集都要并行执行。所以,如果我有三个数据集,我想要三个线程,其中执行类中的测试方法。

1 个答案:

答案 0 :(得分:0)

最好的解决方案是提出一个pull-request来解决你指出的问题。 否则,您可以通过使用静态属性并在第一次调用(及其初始化)之后返回它来自己管理问题。 您也可以拥有外部数据提供程序类,默认情况下您可以在构造函数中初始化它。