Сохранить состояние с помощью параллельных тестов огурцов

Мы используем Cucumber/Guice для запуска тестов пользовательского интерфейса на Java, и несколько файлов определения шагов разбросаны по всему месту.

Мой вопрос: где поддерживается состояние? Если бы я хотел запустить два отдельных теста с двумя отдельными бегунами, как обрабатывались бы классы step defs? Создается ли по одному для каждого сценария? каждая функция? Или они разделены между экземплярами?

Например, будет ли это проблемой? Будет ли следующий шаг-определение не потокобезопасным?

public class StepDef  {

  private Properties props;
  private int num;

  @Inject
  public StepDef(Properties props) {
     this.props = props;
  }


  @Given("^the digit (\d)$")
  public void the_digit(int num) {
    this.num = num;
  }


  @When("^it is multiplied by 5$")
  public void it_is_multiplied_by_5() {
    this.num *= 5;
  }

  @Then("^the result is (\d)$")
  public void the_result_is(int result) {
    assertEqual(result, this.num);
  }
}

person Jason    schedule 04.12.2014    source источник


Ответы (1)


Я считаю, что это один экземпляр класса на бегуна. Так что то, что вы делаете, я думаю, было бы хорошо. Как бы то ни было, мы решили проблему распараллеливания в cucumber-jvm (и сохранение состояния между шагами/функциями), используя многопоточность в java (с переменными, локальными для каждого потока). Он доступен на github — zucchini.

person matt barbour    schedule 09.10.2015