我正在使用TestNG运行测试,但我想动态限制测试服务器上的负载。 为此,我想在运行时验证我不是每秒向服务器发送超过X个请求,如果我在上面,那么让线程休眠。
我的问题是:如何在运行时获取线程数?
我正在研究ITestContext,但它似乎并不存在。
答案 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();