Cucumber 黄瓜的宁静不是注射步骤

Cucumber 黄瓜的宁静不是注射步骤,cucumber,bdd,serenity-bdd,cucumber-serenity,Cucumber,Bdd,Serenity Bdd,Cucumber Serenity,我正在使用cucumber selenium运行一些集成测试。我设法创建了功能文件和测试类。但是一旦我使用Give方法,我就会看到我定义用来与对象页面对话的ScenarioSteps(ProjectMemberSteps)类为空。 我期待着像JBehave一样被注射 public class OrderTest extends StepsLibrary { @Steps ProjectMemberSteps projectManager;//This one is null

我正在使用cucumber selenium运行一些集成测试。我设法创建了功能文件和测试类。但是一旦我使用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();
    }
   }
这是测试的Scenario runner类

           /**
   * 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类,位于steps/serenity/下,如文档所示。 我使用的是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>

net.serenity-bdd
宁静黄瓜
1.1.1
net.serenity-bdd
宁静少年酒店
net.serenity-bdd
核心
1.0.47
无论如何,我正在使用IDE而不是通过Maven运行这个特定的测试,但是我希望“ProjectMemberSteps”能够像JBehave一样被注入

你知道怎么了吗


问候。

我也是个新手。我认为OrderTest.java类没有任何问题,只是它不必要地扩展了一个名为StepsLibrary的类。在JavaCumber中,我不扩展任何其他类。唯一的例外是 StepDefinition文件(您的OrderTest.java)将方法调用委托给xxxxSteps.java类,而该类又委托给xxxPageObject.java(该类必须从Serenity
import net.serenitybdd.core.pages.PageObject
;)扩展PageObject类)

我假设注释之前要重复一个场景。另一种替代方法是在要素文件本身中使用背景关键字。不过,我并不认为这有什么好处

据我所知,您的TestRunner类应该只提供xxStepDefinitions.java所在的包,就像
glue={“stepdefinitions”},
花括号是可选的

其余的在我看来都很好。包括定义

@Steps ProjectMemberSteps projectManager;
再试一次