Переопределение аннотации TestNG для определенного теста - PullRequest
0 голосов
/ 02 июля 2019

вот вопрос.

У меня есть класс, у которого есть метод @AfterMethod, этот метод применяется для всех моих методов тестирования, кроме двух тестов (бизнес-пример заключается в том, что он удаляет то, что я не хочу удалять после каждого метода). Есть ли способ игнорировать @afterMethod для определенного метода тестирования?

У меня есть решение, но оно не так уж и элегантно, любые другие идеи будут высоко оценены.

Один из способов сделать это - иметь дочерний класс, который расширяет родительский класс, и внутри класса я могу переопределить @AfterMethod, но я бы предпочел, чтобы все тесты были в одном месте.

1 Ответ

0 голосов
/ 03 июля 2019

Самый простой способ сделать это, как показано ниже:

  • Определите пользовательскую аннотацию, которая при использовании указывает, что конфигурация для определенного метода тестирования должна быть пропущена.
  • Аннотируйте все @Test методы, для которых необходимо пропустить конфигурацию, используя эту новую аннотацию.
  • В вашем методе конфигурации проверьте, имеет ли входящий метод эту аннотацию, и если да, пропустите выполнение.

Ниже приведен пример, который показывает все это в действии.

Аннотация маркера, указывающая, что метод конфигурации должен быть пропущен.

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({METHOD, TYPE})
public @interface SkipConfiguration {

}

Образец теста класса

import java.lang.reflect.Method;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;

public class TestClassSample {

  @Test
  @SkipConfiguration
  public void foo() {}

  @Test
  public void bar() {}

  @AfterMethod
  public void teardown(Method method) {
    SkipConfiguration skip = method.getAnnotation(SkipConfiguration.class);
    if (skip != null) {
      System.err.println("Skipping tear down for " + method.getName());
      return;
    }
    System.err.println("Running tear down for " + method.getName());
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...