Testng 如何确保DataProvider只初始化一次而不使用Factory?

Testng 如何确保DataProvider只初始化一次而不使用Factory?,testng,testng-dataprovider,Testng,Testng Dataprovider,我有一个测试类,其中所有方法都使用相同的数据提供程序。我希望数据提供者被并行化。我不能使用工厂方法,因为TestNg中存在一个错误,这使得它对我的目的毫无用处 现在,将为使用数据提供程序的每个方法重新计算数据提供程序。使用工厂可以解决这个问题,但我需要工厂生成的测试类的每个实例中的所有方法都在同一个线程中运行。TestNG存在一个突出的缺陷,即并行实例不起作用。我曾尝试使用旧版本的TestNG,但我尝试的每个版本都有缺陷。在我开始失去我所需要的其他功能之前,我只能追溯到很久以前 我还需要Data

我有一个测试类,其中所有方法都使用相同的数据提供程序。我希望数据提供者被并行化。我不能使用工厂方法,因为TestNg中存在一个错误,这使得它对我的目的毫无用处

现在,将为使用数据提供程序的每个方法重新计算数据提供程序。使用工厂可以解决这个问题,但我需要工厂生成的测试类的每个实例中的所有方法都在同一个线程中运行。TestNG存在一个突出的缺陷,即并行实例不起作用。我曾尝试使用旧版本的TestNG,但我尝试的每个版本都有缺陷。在我开始失去我所需要的其他功能之前,我只能追溯到很久以前

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


另一个问题是,当我使用没有工厂的并行数据提供程序时,每个测试方法都在单独的线程中运行。我想要的是测试类中的所有方法都在同一线程中为提供者中的每个数据集运行,并为并行执行的每个数据集运行。因此,如果我有三个数据集,我需要三个线程,在其中执行类中的测试方法。

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

因此,我下载了TestNg的源代码,试图找出如何修复此缺陷。确切地说,我应该在哪里寻找,因为我很难确定给定线程的测试方法安排在哪里。当图形算法被引入后,我是许多迷失在数据结构中的学生中的一员,这并没有什么帮助……一个好的开始是添加一个新的测试来显示问题,并提出它。然后,讨论如何修复它会更简单。顺便说一句,你试过工作区了吗?我有一个很难看的工作区,但是做得很好。我创建了一个数据管理器类,它使用hashmap来管理数据。键值是用于DataProvider提供的每个数据集的WebDriver实例的哈希代码。我将在本周末之前创建该测试。