2016-08-23 4 views
0

Я пытаюсь установить счетчик вызовов для конкретного тестового примера. Следующий код написан для прослушивателя. Цель состоит в том, чтобы запрограммировать определенный метод теста на определенное количество раз. слушатель работает нормально, но setInvocationCount не работает должным образом. КлассКак установить количество вызовов метода тестирования с помощью прослушивателей TestNG?

Слушатель: -

public class InvokedListener implements IInvokedMethodListener { 

    String count = System.getProperty("count", "100"); 
    int counter = Integer.parseInt(count); 
    int count1; 

    @Override 
    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) { 

     System.out.println("before invocation of " + method.getTestMethod().getMethodName()); 
     String methodName = method.getTestMethod().getMethodName(); 

     if (methodName.contains("TC_02_InstructorCreatesCourse")) { 
      System.out.println("The listener is activated for:-" + method.getTestMethod().getMethodName()); 
      method.getTestMethod().setInvocationCount(20); 
      System.out.println("Invocation count is set to :-" + counter); 
     } 
    } 

    @Override 
    public void afterInvocation(IInvokedMethod method, ITestResult testResult) { 
     System.out.println("after invocation " + method.getTestMethod().getMethodName()); 
    } 

TestNG XML: -

<?xml version="1.0" encoding="UTF-8"?> 

 <listener class-name="InvokedLister" /> 

    </listeners> 

<test name="CourseCreation" 
    preserve-order="true" enabled="true"> 
    <classes> 
     <class 
      name="TestCases" /> 
    </classes> 
</test> 

ИСПЫТАНИЙ СЛУЧАИ: -

@Test 
public void TC_01_LoginToSSOApplicationViaInstructor() {  
    System.out.println("1"); 
} 

@Test 
public void TC_02_InstructorCreatesCourse() {  
    System.out.println("2"); 

} 

@Test 
public void TC_03_LoginToSSApplicationViaStudent() { 
    System.out.println("3"); 
} 

@Test 
public void TC_04_EnrollStudentInCourse() { 

} 

ответ

2

IAnnotationTransformer or IAnnotationTransformer2 являются лучшим выбором слушателя для вашей цели:

public class MyTransformer implements IAnnotationTransformer { 

    private final int counter; 

    public MyTransformer() { 
    String count = System.getProperty("count", "100"); 
    counter = Integer.parseInt(count); 
    } 

    public void transform(ITest annotation, Class<?> testClass, 
     Constructor testConstructor, Method testMethod) { 
    if (testMethod.getName().contains("TC_02_InstructorCreatesCourse")) { 
     System.out.println("The listener is activated for:-" + testMethod.getName()); 
     annotation.setInvocationCount(20); 
     System.out.println("Invocation count is set to :-" + counter); 
    } 
    } 
} 
+0

могли бы вы предоставить больше понимания, почему это лучше слушать? – CARE

+0

Поскольку IAnnotationTransformer используется TestNG перед запуском тестов (фаза инициализации) и IInvokedMethodListener используется во время прогона. Изменение значений во время фазы выполнения может или не может работать. – juherr

+0

Спасибо, Жюльен Херр. –

Смежные вопросы