Как получить 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. Там его можно сохранить в поле и использовать его в самом тесте.