我正在使用Selenium WebDriver + Cucumber。上次我被建议开始创建返回页面对象的方法,而不仅仅是void方法。提到的主要优点是,由于它可以在测试类开始时初始化所有页面对象,因为它可以在测试方法中完成。
我已经考虑了一段时间,我认为当我们不使用BDD测试并且整个测试场景包含在一个测试方法的主体中时,这是个好主意。但是,如果我们使用Cucumber,问题在于场景是由测试步骤构建的,这些步骤是单独的方法,并且在一个步骤中初始化的页面对象在另一个步骤中不可用。它迫使我们在很多步骤中初始化一个页面,这与我在前一段中提到的优势不符。
假设我们有以下情况:
public class Page1 {
public Page2 method1 {
[...]
return new Page2(driver);
}
}
public class Page2 {
public Page2 method2 {
[...]
return this;
}
}
public class TestClass {
WebDriver driver = new FirefoxDriver();
@Given("Step 1")
public void step1() {
Page1 p1 = new Page1(driver);
[...]
Page2 p2 = p1.method1;
}
@When("Step 2")
public void step2() {
p2.method2(); // Here I have a problem, as p2 is not initialised.
}
}
如果有一些很好的方法可以使用返回页面对象的方法以及使用Cucumber创建的BDD测试吗?谢谢!