2013-04-24 3 views
0

Я пытаюсь интегрировать Testlink с TestNG подхода нижеполучить аннотацию методы испытания в TestNG ITestListener

1> Написать ITestListner с onTestFailure и onTestSuccess

2> получить аннотацию методы (например, АСМАП, который будет эквивалентно названию теста в тестовой ссылке), который не работает/имеет значение в переменной

3> Установите соединение с TestLink с помощью API и обновите тестовый пример.

Однако я борюсь, чтобы найти метод значение аннотаций в ITestListner и требование, чтобы получить значение аннотаций в ITestListner только потому, что правильные тестовые случаи могут быть обновлены в Test_link

Может кто-то пожалуйста, помогите мне, как получить Метод испытаний аннотации значение в ITestListner или любой другой подход, в котором я могу интегрировать обновление тестовой ссылки с помощью TestNG

ответ

1

Привет Спасибо niharika за помощь Прежде всего вы правильно объяснить использование TestNG, но мы используем TestNG для Selenium, и уже есть около 1000 тестовых примеров в тестовых методах, и мы должны жить с этим

Некоторые из того, как я определил решение, мы все равно можем получить testName метода тестирования, используя двух пользователей Это просто работа вокруг. Я не уверен, что это лучший pproach, но как сейчас решения моей цели

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 Аннотация настройки статической переменной класса, который может быть использован в MyITestListner

0

ITestListener - это те, которые используются после тега <test>. Для получения имени метода и особенностей аннотации вам необходимо реализовать IInvokedMethodListener и в методах after/before этого интерфейса и использовать что-то вроде method.getTestMethod().getMethodName(), чтобы получить имя метода выполнения.

Если вы добавляете testName на уровне метода, я думаю, что вы делаете это неправильно, так как помощь testng упоминает это «Имя теста, в который должен быть помещен этот тестовый класс. Этот атрибут игнорируется, если @Test не на уровне класса ».

Если вы действительно указав @Test на вашем уровне класса, то вы можете получить его, как показано ниже:

method.getTestMethod().getTestClass().getTestName() 
+0

, но после использования IInvokedMethodListener также я не могу получить значение аннотации тестового метода, например @Test (testName = "TestCaseID"), я хочу получить значение testName, которое является TestCaseID в переменной –

+0

. Добавлен в мой ответ .. –

+0

Извините, если я запутываю вас, поскольку я новичок в TestNG, я думаю, что вы еще не получили мой вопрос, пусть говорят, что у меня есть класс, который имеет 4 тестовых метода с @Test (testName = "TestCaseID") аннотацией (которая является единственный способ проверить), и я хочу получить аннотацию в ITestListner, есть один список, который предоставляет возможность получить его значение аннотации, но я хочу аннотацию для конкретного метода, когда он передан/сбой. –

0

Немного уродливые, и вы, вероятно, захотите обернуть эти части нулевыми проверками в своем коде, но так вы получите имя testName, указанное в аннотации из ITestResult:

iTestResult.getMethod().getConstructorOrMethod().getMethod().getAnnotation(Test.class).testName() 
Смежные вопросы