Это способ получить имя метода тестирования в прослушивателях TestNG на этапе настройки?

У меня есть прослушиватель TestNG, который реализует IInvokedMethodListener. В @BeforeMethod мне нужно настроить тестовый контекст, вот пример:

public class ThucydidesInvokedMethodListener implements IInvokedMethodListener2 {

    public void beforeInvocation(final IInvokedMethod method, final ITestResult testResult) {

    boolean areBeforeMethods = method.getTestMethod().getTestClass().getBeforeTestMethods().length > 0;
    if ((areBeforeMethods && method.getTestMethod().getTestClass().getBeforeTestMethods()[0] == method.getTestMethod()) ||
            !areBeforeMethods && method.isTestMethod()) {

        final ThucydidesTestContext context = new ThucydidesTestContext(testResult);
        testResult.setAttribute(contextKey(), context);
        context.before();
    }
} 

но также мне нужно имя теста, которое будет выполняться после BeforeMethod, чтобы использовать это имя теста в отчетах. Возможно ли это с помощью TestNG? Также я пробовал IInvokedMethodListener2, который дополнительно имеет ITestContext, но также не предоставляет имя теста.


person user2075162    schedule 17.02.2013    source источник


Ответы (2)


Использование слушателя для настройки ваших тестов кажется мне неправильным - для этого и нужны аннотации @Before*.

Я не знаю, как получить желаемую информацию с помощью слушателя, но с @BeforeMethod это просто: просто добавьте параметр типа java.reflect.Method в сигнатуру вашего метода, и TestNG внедрит текущий метод, который вы затем можете запросить. его имя и все остальное, что вы хотите знать.

Вся «магия» для аннотаций TestNG задокументирована здесь: Внедрение зависимостей TestNG

ХТН

/Йенс

person jabbrwcky    schedule 18.02.2013

Ну, с IInvokedMethodListener метод beforeInvocation дает вам метод IInvokedMethod.

method.getTestMethod.getMethodName() дать вам имя метода.

person niharika_neo    schedule 20.02.2014