当前位置: 首页 > 知识库问答 >
问题:

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

薛淮晨
2023-03-14

我有一个测试类,其中所有方法都使用相同的数据提供者。我想让数据提供者并行化。我不能使用工厂方法,因为TestNg中有一个缺陷,这使得它对我的目的毫无用处。

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

我还需要让数据提供者并行运行——也就是说,测试类中的所有方法都应该为提供的每一组html" target="_blank">数据并行运行。是否有一些解决方案可以用来确保DataProvider只初始化一次,并且提供程序是多线程的?

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

共有1个答案

董飞航
2023-03-14

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

 类似资料:
  • 问题内容: 将log4j添加到我的应用程序后,每次执行我的应用程序时,都会得到以下输出: 看来这意味着缺少配置文件。此配置文件应位于何处,什么是良好的入门内容? 我使用纯Java开发桌面应用程序。因此没有网络服务器等… 问题答案: 默认情况下,在上查找名为或的文件。 您可以按照此处所述通过设置系统属性来控制它用来初始化自身的文件(查找“默认初始化过程”部分)。 例如: 将导致在类路径上查找名为的文

  • 如果我们需要初始化Admob SDK,那么我们应该在MainActivity中对其进行一次初始化。还是需要在每个有Admob广告的活动中初始化它? 根据此链接:https://firebase.google.com/docs/admob/android/quick-start"要在应用启动时初始化Google Mobile Ads SDK,请在MainActive类的onCreate()方法中调用

  • 我正在构建一个Javafx gui应用程序,我正面临这个问题。我的程序有多个场景,所以我有不同的FXML文件和控制器类。问题是,在第一个“主菜单”(这是我的应用程序中弹出的第一个)场景中,在控制器的构造函数中,我调用了一些从数据库加载数据的重型方法等等。所以会发生什么。在接下来的场景中我确实有“主菜单按钮”,即切换到主菜单场景!所以每次我回到“主菜单”场景时,构造函数都会调用大量加载数据的方法。但

  • 确保函数只被调用一次。 使用一个闭包,使用一个成为 called 的标志,并在第一次调用该函数时将其设置为 true ,以防止它被再次调用。 为了允许函数改变它的 this 上下文(比如在一个事件监听器中),必须使用function 关键字,并且提供的函数必须应用上下文。 允许使用 rest(剩余)/spread(展开) (...) 运算符为函数提供任意数量的参数。 const once = fn

  • 我有一个应用程序,大部分时间都在启动,但每7次左右启动它就会崩溃,出现错误: 我引用了这个,但最终出现了类似的错误 IndexOutOfBoundsException:空列表不包含索引1上的元素。 编辑2 null ViewModel

  • 我从应用程序启动时的API调用中获取了一堆字符串。我把它们存储在一个字典里,变成一个单例,这样我就可以通过我的应用程序重用它们了。 问题是,在我的字典中初始化所有键之前,调用就完成了,完成就被激发了。什么方法会等待所有的初始化,这样它就不会返回nil了? 下面是我的初始化方法: completion(这里是success())正在触发,但是当我调用视图中的一个键时,它还没有初始化,所以我得到一个关