我使用黄瓜硒进行一些整合测试。我设法创建功能文件和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那样注入。
任何想法都错了吗?
问候。
答案 0 :(得分:1)
我也是新手。我看不到您的OrderTest.java类有任何问题,只是它不必要地扩展了一个名为StepsLibrary的类。在Java-Cucumber中,我不扩展任何其他类。唯一的例外是何时
我假设在注解之前是要重复一个场景。相反,另一个替代方法是在特征文件本身中使用Background关键字。我对此没有任何优势。
对我来说,您的Test Runner类应该只提供xxxxStepDefinitions.java所在的包,就像import net.serenitybdd.core.pages.PageObject
花括号是可选的一样。
其余的对我来说似乎还可以。包括定义
glue = {"stepdefinitions"},
再尝试一次。