Конфликт параметров Cucumber и TestNG - PullRequest
0 голосов
/ 29 сентября 2019

Я не могу установить параметры через файл функций огурца, так как TestNG выдает ошибку из-за конфликта параметров

"Cannot inject @Test annotated Method [days_of_the_week_is_enabled_by_default] with [class java.lang.String, class java.lang.String]" 

Как вы видите из приведенного ниже фрагмента кода, я использую файл функций огурца для передачи параметрак методу, но когда я добавляю аннотацию testNG @Test, она выдает ошибку, поскольку не может ввести @ Test.

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

@Test
@Then("^(.*) is (.*) by default$")
public void days_of_the_week_is_enabled_by_default(String dOWeek, String status) {
        draftPage.daysSelectionDefault(dOWeek, status);
    }

1 Ответ

0 голосов
/ 30 сентября 2019

Этого нельзя сделать. Вы можете использовать TestNG в качестве бегуна для запуска тестов на основе огурцов. Но это, возможно, приведет к тому, что TestNG создаст один метод @Test, который запускает все файлы объектов. Вы можете заменить TestNG и использовать JUnit для того же.

Вам может понадобиться использовать другие механизмы, такие как аргументы JVM, возможно, для передачи параметров в ваши тесты на огурец.

Другой вариант будет длявам нужно создать прослушиватель TestNG, и из него взять ITestContext, и через контекст теста вы можете извлечь параметры.

//This class is not thread safe, and will give unpredictable results
//if you multiple <test> tags running.
import org.testng.ITestContext;
import org.testng.ITestListener;

public class LocalListener implements ITestListener {

  private static LocalListener instance;
  private ITestContext testContext;

  private static void setInstance(LocalListener obj) {
    instance = obj;
  }

  public static LocalListener getInstance() {
    return instance;
  }

  public LocalListener() {
    setInstance(this);
  }

  @Override
  public void onStart(ITestContext context) {
    this.testContext = context;
  }

  public ITestContext getTestContext() {
    return testContext;
  }
}
...