我正在尝试将TestLink与TestNG集成 方法如下
1>使用onTestFailure和onTestSuccess
编写ITestListner2 - ;获取方法的注释(如testName,它将等同于testlink中的测试名称),它在变量中失败/成功
3>使用可用的API与TestLink建立连接并更新测试用例。
但是我很难在ITestListner中找到方法Annotation值,并且要求只在ITestListner中获取注释值,以便在Test_link中更新正确的测试用例
有人可以帮助我如何在ITestListner中获取Test Method注释值或者我可以将testlink更新与TestNG集成的任何其他方法
答案 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()