Переменная с некоторым значением в реализации шага с одним огурцом теряет свое значение на следующем шаге - PullRequest
0 голосов
/ 13 декабря 2018

Переменная с некоторым значением в реализации одного шага огурца теряет свое значение на следующем шаге

@Test
Feature: Test

@test
  Scenario: Test

   When user sets value of varibale x
    Then user retrives value of x

Шаг реализации

import cucumber.api.java.en.When;

public class TestStepToBeRemoved {
    String x;

    @When("^user sets value of varibale x$")
    public void setValueOfx() {
        x = "Random Text";
    }

    @When("^user retrives value of x$")
    public void retriveValueOfX() {
        System.out.println("Value of X is : " + x);
    }
}

Это работало нормально, прежде чем мы объединили другойфреймворк в нашем проекте, который использует библиотеки Guice и инжекторы.Но теперь выведите

Value of X is : null

Итак, есть ли в огурце что-либо, что мы можем установить огурцом для очистки всего объекта, когда выполнение шага завершено?

Пожалуйста, не спрашивайте, чтобы сделать x статическим,это решит эту проблему, но нам нужно другое решение, кроме как сделать x static

1 Ответ

0 голосов
/ 04 января 2019

когда вы используете cucumber-guice lib, cucumber каким-то образом создает разные ссылки на объекты для разных определений шагов, поэтому переменная экземпляра, инициализированная за один шаг, не сможет сохранить то же значение на следующем шаге.Чтобы избежать этой ситуации, вы можете использовать @ScenarioScoped вверху в файле определения шага, и это решит проблему

import cucumber.api.java.en.When;

@ScenarioScoped
public class TestStepToBeRemoved {
    String x;

    @When("^user sets value of varibale x$")
    public void setValueOfx() {
        x = "Random Text";
    }

    @When("^user retrives value of x$")
    public void retriveValueOfX() {
        System.out.println("Value of X is : " + x);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...