Я использую TestNG и имею набор тестов. Я хочу выполнить действие перед каждым тестовым методом, требующим информации о методе. Как простой пример, скажем, я хочу напечатать имя метода до его выполнения. Я могу написать метод, аннотированный с помощью @BeforeMethod
. Как я могу вводить параметры в этот метод?
Есть ли способ получить метаданные метода при использовании метода @BeforeMethod в TestNG?
Ответ 1
Взгляните на зависимость впрыска в документации. В нем указано, что инъекция зависимостей может быть использована, например, в этом случае:
Любой
@BeforeMethod
(и@AfterMethod
) может объявить параметр типаjava.lang.reflect.Method
. Этот параметр получит метод проверки, который будет вызываться после завершения этого@BeforeMethod
(или после запуска метода для@AfterMethod
).
Поэтому вам просто нужно объявить параметр типа java.lang.reflect.Method
в @BeforeMethod
, и у вас будет доступ к имени следующего тестового имени. Что-то вроде:
@BeforeMethod
protected void startTest(Method method) throws Exception {
String testName = method.getName();
System.out.println("Executing test: " + testName);
}
Также можно использовать интерфейс ITestNGMethod
(документация), но поскольку я не совсем уверен в том, как использовать это, я просто позволю вам взглянуть на него, если вам интересно.
Ответ 2
Ниже приведен пример того, как вы можете получить имя метода и имя класса в вашем методе
@BeforeMethod
public void beforemethod(Method method){
//if you want to get the class name in before method
String classname = getClass().getSimpleName();
//IF you want to get the method name in the before method
String methodName = method.getName()
}
@Test
public void exampleTest(){
}