黄瓜 - 宁静不注入步骤

问题描述 投票:1回答:1

我正在使用黄瓜 - 硒进行一些集成测试。我设法创建功能文件和Test类。但是一旦我在Give方法中,我看到我定义的与对象页面交互的ScenarioSteps(ProjectMemberSteps)类为null。我期待像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();
    }
   }

这是测试的Scenario运行者类

           /**
   * 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那样注入。

有什么想法错了吗?

问候。

cucumber bdd serenity-bdd cucumber-serenity
1个回答
1
投票

我也是新手。我没有看到您的OrderTest.java类有任何问题,除了它不必要地扩展了一个名为StepsLibrary的类。在Java-Cucumber中,我没有扩展任何其他类。唯一的例外是当StepDefinition文件(您的OrderTest.java)委托对xxxxSteps.java类的方法调用,然后委托给xxxPageObject.java(它必须从Serenity import net.serenitybdd.core.pages.PageObject扩展PageObject类;)

我假设在注释之前重复一个场景。相反,另一种选择是在要素文件本身中使用的Background关键字。尽管如此,我并没有声称有任何优势。

对我来说,你的Test Runner类应该只提供xxxxStepDefinitions.java所在的包,就像glue = {"stepdefinitions"},花括号是可选的我相信。

剩下的看起来对我来说完全没问题。包括定义

@Steps ProjectMemberSteps projectManager;

再试一次。

© www.soinside.com 2019 - 2024. All rights reserved.