1

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

1>用 onTestFailure 和 onTestSuccess 编写 ITestListner

2> 获取在变量中失败/成功的方法的注释(如 testName,相当于 testlink 中的测试名称)

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

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

有人可以帮我如何在 ITestListner 或任何其他方法中获取测试方法注释值,在这些方法中我可以将 testlink 更新与 TestNG 集成

4

3 回答 3

1

嗨,感谢 niharika 的帮助,首先,您在解释 TestNG 的使用方面是正确的,但我们正在将 TestNG 用于 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 中使用的静态变量

于 2013-04-25T07:02:48.323 回答
0

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

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

如果您确实在您的班级级别指定了@Test,那么您可以得到它,如下所示:

method.getTestMethod().getTestClass().getTestName()
于 2013-04-24T10:52:42.097 回答
0

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

iTestResult.getMethod().getConstructorOrMethod().getMethod().getAnnotation(Test.class).testName()
于 2014-09-26T20:35:08.800 回答