我有一种方法可以使用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);
}