Огурец-спокойствие не залить

Я использую cucumber-selenium для запуска некоторых интеграционных тестов. Мне удается создать файл объектов и класс Test. Но как только я попал в метод Give, я вижу, что класс ScenarioSteps(ProjectMemberSteps), который я определяю для взаимодействия со страницей объекта, является нулевым. Я ожидал, что мне сделают инъекцию, как делает JBehave.

public class OrderTest extends StepsLibrary {

    @Steps ProjectMemberSteps projectManager;//This one is null

    @Before
    public void beforeScenarios() throws Exception {
       initializeDemoUIServer();
     }
    @Given("I open the login page")
    public void openLoginPage(){
        projectManager.openLoginPage();
    }
   }

Это класс бегуна сценария для теста

           /**
   * Serenity story for login.
     */
  @RunWith(CucumberWithSerenity.class)
@CucumberOptions(features="src/test/resources/features/order/order.feature",
    glue = Order.BEHAVIOUR_PACKAGE)
    public class Order {
    public static final String BEHAVIOUR_PACKAGE =    "com.behaviour.steps.serenity";
    }

Это класс ProjectMemberSteps, находящийся в стадии / спокойствие /, как предлагается в документации. Я использую Maven, и библиотеки, которые я использую,

          <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-cucumber</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-junit</artifactId>
    </dependency>

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>core</artifactId>
        <version>1.0.47</version>
    </dependency>

В любом случае, этот конкретный тест я запускаю в среде IDE, а не через Maven, но я ожидал, что "ProjectMemberSteps" будет введен так, как это делает JBehave.

Есть идеи, что случилось?

С уважением.

0 ответов

Я тоже новичок. Я не вижу никаких проблем с вашим классом OrderTest.java за исключением того, что он неоправданно расширяет класс с именем StepsLibrary. В Java-Cucumber я не расширяю другие классы. Единственное исключение - когда файл StepDefinition (ваш OrderTest.java) делегирует метод, вызывающий класс xxxxSteps.java, который, в свою очередь, делегирует xxxPageObject.java (который ДОЛЖЕН расширять класс PageObject из Serenity. import net.serenitybdd.core.pages.PageObject;)

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

По моему мнению, ваш класс Test Runner должен давать только пакет, в котором находится xxxxStepDefinitions.java, просто как glue = {"stepdefinitions"}, фигурные скобки не являются обязательными, я считаю.

В остальном все выглядит нормально. Включая определение

@Steps ProjectMemberSteps projectManager;

Попробуй еще раз.

Другие вопросы по тегам