获取testNG ITestListener中的测试方法的注释

时间:2013-04-24 10:42:23

标签: selenium testng testlink

我正在尝试将TestLink与TestNG集成 方法如下

1>使用onTestFailure和onTestSuccess

编写ITestListner

2 - ;获取方法的注释(如testName,它将等同于testlink中的测试名称),它在变量中失败/成功

3>使用可用的API与TestLink建立连接并更新测试用例。

但是我很难在ITestListner中找到方法Annotation值,并且要求只在ITestListner中获取注释值,以便在Test_link中更新正确的测试用例

有人可以帮助我如何在ITestListner中获取Test Method注释值或者我可以将testlink更新与TestNG集成的任何其他方法

3 个答案:

答案 0 :(得分:1)

您好,感谢niharika的帮助 首先,你在解释TestNG的使用方面是正确的,但我们正在使用TestNG for Selenium,并且已经有大约1000个测试用例在测试方法中编写,我们必须忍受它

我已经找到了解决方案,我们仍然可以使用两个列表器获取测试方法的testName 这只是解决方法我不确定这是否是最好的方法,但目前正在解决我的目的

package com.automation.testng.listner;
import org.testng.*;


public class MyIInvokeMethodListner_TestName_TestLink implements IInvokedMethodListener    {

public static String testName;


public void afterInvocation(IInvokedMethod arg0, ITestResult arg1) {
    // TODO Auto-generated method stub

}

public void beforeInvocation(IInvokedMethod m, ITestResult tr) {
    // TODO Auto-generated method stub
    //This give the Annotation Test object
    org.testng.annotations.Test t=m.getTestMethod().getMethod().getAnnotation(org.testng.annotations.Test.class);

    MyIInvokeMethodListner_TestName_TestLink.testName = t.testName().toString();

}


}

MyITestListner如下所示

package com.automation.testng.listner;
import org.testng.*;
public class MyITestListner_TestLink extends TestListenerAdapter  {

/*IAnnotationTransformer at;
public Listner_1()
{
    this.at = new Annotation_listner();
}*/
@Override
public void onTestFailure(ITestResult tr)
{
    System.out.println("Hurray !I am being inboked from Test listner");
    MyIInvokeMethodListner_TestName_TestLink a = new MyIInvokeMethodListner_TestName_TestLink();
    System.out.println(MyIInvokeMethodListner_TestName_TestLink.testName);

    }

public void onTestSuccess(ITestResult tr)
{
    MyIInvokeMethodListner_TestName_TestLink a = new MyIInvokeMethodListner_TestName_TestLink();
    System.out.println(MyIInvokeMethodListner_TestName_TestLink.testName);
}

}

基本上我们正在获取方法,然后使用Test Annotation类设置可以在MyITestListner中使用的静态变量

答案 1 :(得分:0)

ITestListener是在<test>标记之后使用的。要获取方法名称和注释细节,您需要在此接口的after / before方法中实现IInvokedMethodListener,并使用method.getTestMethod().getMethodName()之类的方法来获取执行方法名称。

如果你在方法级别添加testName,我认为你做错了,因为testng的帮助提到了“这个测试类应放在的测试名称。如果@Test不是,则忽略此属性在班级。“

如果您确实在班级指定@Test,那么您可以按以下方式获得:

method.getTestMethod().getTestClass().getTestName()

答案 2 :(得分:0)

有点难看,您可能希望将这些部分包装在代码中的空检查中,但这是您从ITestResult获取注释中指定的testName的方法:

iTestResult.getMethod().getConstructorOrMethod().getMethod().getAnnotation(Test.class).testName()