Как получить testName из аннотации @Test?

Используя testNG, я могу передать в аннотацию теста имя теста @Test(testName = "Test name"). Как я в последствии могу получить это имя?


Ответы (1 шт):

Автор решения: Alexey R.

Вот пример такого подхода:

package click.webelement.testng;

import org.testng.ITestResult;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestName {

    String name;

    @BeforeMethod
    public void configure(ITestResult result){
        name = result.getMethod().getDescription();
    }

    @Test(description = "This is my test")
    public void myTest(){
        System.out.println("Running: " + name);
    }

}

Дело в том, что @Test(testName = "Test name") можно использовать только на уровне всего класса, а не отдельного метода. Для методова есть параметр description.

Он хранится в объекте ITestResult, который TestNG не умеет инджектить напрямую в тестовый метод. Зато умеет инджектить его в @BeforeMethod. Там его можно сохранить в поле и использовать его в самом тесте.

→ Ссылка