TestNG-使用自定义注释作为参数,而不是使用dataprovider

时间:2018-08-01 08:07:37

标签: testng testng-dataprovider

我正在为测试创建一个通用框架。我创建了注释,即MyTokenAnnotation使用TokenType枚举值。

@MyTokenAnnotation(tokenType =  {TokenType.A, TokenType.B, TokenType.C})
@Test
public void myTestMethod1(TokenType token)  {
    //Logic Based on Token Type say calling
 myAPI1(token);
}

现在,我想运行测试的次数与MyTokenAnnotation中传递的逗号分隔令牌的数量相同。为此,我正在实现IMethodInterceptor的拦截方法。现在,如何将Token参数传递给myTestMethod。 (这与dataProvider有点类似,但是我要创建注释,因为我不想让用户编写各种数据提供者组合,而只是使用注释来运行。)

public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
    List<IMethodInstance> result = new ArrayList<IMethodInstance>();
    for (IMethodInstance method : methods) {
        TokenType[] tokenTypes = method.getMethod().getConstructorOrMethod().getMethod().getAnnotation(MyTokenAnnotation.class).tokenType();
        for (TokenType t : tokenTypes)
            result.add(method); // how to attach tokenType param information with method ?                  

    }
    return result;
}

0 个答案:

没有答案