Cucumber-serenity 不注入步骤
Cucumber-serenity not inject Steps
我正在使用 cucumber-selenium 运行 一些集成测试。我设法创建了功能文件和测试 class。但是一旦我在我的 Give 方法中,我就会看到我定义为与对象页面对话的 ScenarioSteps(ProjectMemberSteps) class 为空。
我期待像 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();
}
}
这是测试场景 运行ner class
/**
* 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";
}
这是 class 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>
无论如何,这个特定的测试我是 运行 IDE 而不是通过 Maven,但我期望 "ProjectMemberSteps" 会像 JBehave 那样被注入。
知道哪里出了问题吗?
此致。
我也是新手。我没有发现您的 OrderTest.java class 有任何问题,只是它不必要地扩展了一个名为 StepsLibrary 的 class。在 Java-Cucumber 中,我不扩展任何其他 class。唯一的例外是什么时候
StepDefinition 文件(您的 OrderTest.java)将方法调用委托给 xxxxSteps.java class,后者又委托给 xxxPageObject.java(必须从 Serenity [=11 扩展 PageObject class =];)
我假设注释之前是重复一个场景。相反,另一种选择是在功能文件本身中使用背景关键字。不过我并没有声称这有任何好处。
对我来说,你的测试运行者 class 应该只提供 xxxxStepDefinitions.java 所在的包,就像 glue = {"stepdefinitions"},
我认为花括号是可选的一样。
其余的对我来说完全没问题。包括定义
@Steps ProjectMemberSteps projectManager;
再试一次。
我正在使用 cucumber-selenium 运行 一些集成测试。我设法创建了功能文件和测试 class。但是一旦我在我的 Give 方法中,我就会看到我定义为与对象页面对话的 ScenarioSteps(ProjectMemberSteps) class 为空。 我期待像 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();
}
}
这是测试场景 运行ner class
/**
* 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";
}
这是 class 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>
无论如何,这个特定的测试我是 运行 IDE 而不是通过 Maven,但我期望 "ProjectMemberSteps" 会像 JBehave 那样被注入。
知道哪里出了问题吗?
此致。
我也是新手。我没有发现您的 OrderTest.java class 有任何问题,只是它不必要地扩展了一个名为 StepsLibrary 的 class。在 Java-Cucumber 中,我不扩展任何其他 class。唯一的例外是什么时候 StepDefinition 文件(您的 OrderTest.java)将方法调用委托给 xxxxSteps.java class,后者又委托给 xxxPageObject.java(必须从 Serenity [=11 扩展 PageObject class =];)
我假设注释之前是重复一个场景。相反,另一种选择是在功能文件本身中使用背景关键字。不过我并没有声称这有任何好处。
对我来说,你的测试运行者 class 应该只提供 xxxxStepDefinitions.java 所在的包,就像 glue = {"stepdefinitions"},
我认为花括号是可选的一样。
其余的对我来说完全没问题。包括定义
@Steps ProjectMemberSteps projectManager;
再试一次。