如何在运行时获取TestNG线程的数量

时间:2013-10-23 06:15:58

标签: java multithreading testng

我正在使用TestNG运行测试,但我想动态限制测试服务器上的负载。 为此,我想在运行时验证我不是每秒向服务器发送超过X个请求,如果我在上面,那么让线程休眠。

我的问题是:如何在运行时获取线程数?

我正在研究ITestContext,但它似乎并不存在。

2 个答案:

答案 0 :(得分:3)

在运行的TestNG标记测试中,Thread.activeCount()为您提供当前TestNG组中的线程数。如果threadPoolSize设置为1,则此数字将为1.如果threadPoolSize大于1,则此数字将为threadPoolSize + 1,因为除了池大小外,还有一个TestNG管理器线程。对于您在运行中创建的线程,您需要构建它们在TestNG ThreadGroup中传递。例如:

    Thread aNewWorkerThread = new Thread( Thread.currentThread().getThreadGroup(), yourRunnableThingHere ); 

这些线程在激活时应该反映在Thread.activeCount()返回值中。

答案 1 :(得分:0)

你可以注入" IInvokedMethod方法"的TestNg然后使用以下代码

 int count = method.getTestMethod().getXmlTest().getThreadCount();