Подтвердить что ты не робот

Есть ли способ получить метаданные метода при использовании метода @BeforeMethod в TestNG?

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

4b9b3361

Ответ 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(){


}