我有一种方法可以使用TestNG进行测试,并用以下注释将其标记为:

@Test(invocationCount=10, threadPoolSize=5)

现在,在我的测试方法中,我想获取当前正在执行的invocationCount。那可能吗?如果是的话,那么我将很高兴知道如何做。

更恰当的例子:
@Test(invocationCount=10, threadPoolSize=5)
public void testMe() {
   System.out.println("Executing count: "+INVOCATIONCOUNT); //INVOCATIONCOUNT is what I am looking for
}

作为引用,我在Eclipse中使用TestNG插件。

最佳答案

您可以通过在测试方法中添加 ITestContext 参数来使用TestNG依赖项注入(inject)功能。请引用http://testng.org/doc/documentation-main.html#native-dependency-injection

从ITestContext参数,可以调用它的 getAllTestMethods(),它返回 ITestNGMethod 的数组。它应该返回仅包含一个元素的数组,这是指当前/实际的测试方法。最后,您可以调用ITestNGMethod的 getCurrentInvocationCount()

您的测试代码应少一些,例如以下示例,

@Test(invocationCount=10, threadPoolSize=5)
public void testMe(ITestContext testContext) {
   int currentCount = testContext.getAllTestMethods()[0].getCurrentInvocationCount();
   System.out.println("Executing count: " + currentCount);
}

10-08 10:57