【发布时间】:2020-03-01 02:11:26
【问题描述】:
我有一个从数据提供者接收数据的测试。我希望这个测试与来自数据提供者的不同值并行运行。
我尝试了类似的方法:
public class IndependentTest
{
@Test(dataProvider = "dp1" ,threadPoolSize=3,invocationCount=1)
public void testMethod(int number)
{
Long id = Thread.currentThread().getId();
System.out.println("HELLO : " + id);
}
@DataProvider(name = "dp1",parallel=true)
public Object[][] dp1() {
return new Object[][] {
new Object[] { 1 },
new Object[] { 2 },
new Object[] { 3 },
new Object[] { 4 },
new Object[] { 5 },
new Object[] { 6 },
new Object[] { 7 },
new Object[] { 8 }
};
}
}
我收到的输出是:
你好:10
你好:12
你好:17
你好:11
你好:16
你好:14
你好:13
你好:15
产生 10 个线程,而我在线程池大小中指定了 5 个。 您能否告诉上面的 sn-p 必须添加什么来控制数据提供者线程池大小。
【问题讨论】:
-
您需要并行运行测试,而不是提供程序。在您的构建中,将并行模式配置为
methods和threadCount到 5。 -
嗨 Ben,我有一个测试,它应该根据数据提供者提供的值的数量运行超过 10k 次。我想控制在 dataprovider 中设置 parallel=true 时产生的线程数。我发现这个命令行参数 -dataproviderthreadcount 来控制 dataprovider 线程数。但是我想知道如何使用注释来完成此操作
-
在我的项目的build 中,我将测试配置为并行运行,并且由于数据提供者在 827 种测试方法上总共执行了 180 万次。我认为您不能通过注释来配置它,而是将其配置传递给运行器。
标签: java multithreading testng dataprovider