提问者:小点点

如何在TestNG@测试注释中设置调用计数值


我被困在我的框架中的一个点上。

我想多次运行@Test注释。为此,我在谷歌上搜索了它,并找到了使用@Test注释设置invocationCount变量的解决方案。

所以我所做的是:

@Test(invocationCount=3)

这对我来说非常有效。但我的问题是我想用一个变量设置这个参数的值。

例如。我有一个变量

int x=5;

@Test(invocationCount=x)

是否有任何可能的方法来执行此操作或任何其他好的方法来多次执行相同的@Test注释。

提前感谢。


共1个答案

匿名用户

从testcase设置TestNG超时是一个类似的问题。

您有2个选择:

如果x是常量,则可以使用IAnnotationTransformer

否则,您可以像这样使用hack:

public class DynamicTimeOutSample {

  private final int count;

  @DataProvider
  public static Object[][] dp() {
    return new Object[][]{
        new Object[]{ 10 },
        new Object[]{ 20 },
    };
  }

  @Factory(dataProvider = "dp")
  public DynamicTimeOutSample(int count) {
    this.count = count;
  }

  @BeforeMethod
  public void setUp(ITestContext context) {
    ITestNGMethod currentTestNGMethod = null;
    for (ITestNGMethod testNGMethod : context.getAllTestMethods()) {
      if (testNGMethod.getInstance() == this) {
        currentTestNGMethod = testNGMethod;
        break;
      }
    }
    currentTestNGMethod.setInvocationCount(count);
  }

  @Test
  public void test() {
  }
}