我正在尝试使用多个步骤定义文件构建 Cucumber BDD 框架。我仍在尝试了解如何使用 picocontainer 运行步骤定义文件。我的问题是,一旦我将 picocontainer jar 添加到项目的构建路径中,在执行测试运行程序时,它无法找到任何场景或步骤。
安慰
Java项目构建路径
我的项目包含:
• A feature file
• 2 step definition files
• 1 test runner
• Utilities package with a webdriver initializer method
我的功能文件有以下步骤:
前 2 个小黄瓜步骤与以下步骤定义类中的方法绑定:
package stepDefinitions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import cucumber.api.java.en.Given;
public class SD_HomePage {
WebDriver driver;
@Given ("^the user is on the websites homepages$")
public void user_is_on_the_websites_homepage() {
driver = utilities.WebDriverInitializer.openWebdriver("Chrome");
driver.get("https://www.forExample.com/");
}
@Given("^then clicks on AboutUs title$")
public void then_clicks_on_AboutUs_title() throws Throwable {
driver.findElement(By.xpath("//a[@href='/en/about-us'][1]")).click();
}
}
第三个小黄瓜步骤粘在这个单独的步骤 def 类上:
package stepDefinitions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import cucumber.api.java.en.When;
public class SD_AboutUsPage {
WebDriver driver;
@When("^the user clicks on Contact widget$")
public void the_user_clicks_on_Contact_widget() throws Throwable {
driver.findElement(By.xpath("//span[@class='icon-envelope listCta__img'][1]")).click();
}
}
从测试运行器执行测试时,运行器不会找到任何场景或步骤:
package testRunners;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "Features", glue = "stepDefinitions")
public class TestRun_NewsletterForm {
}
来自 Testrunner 的控制台结果
但是,当我删除 picocontainer 时,会找到场景和步骤。这将给我留下无法使用共享状态 Webdriver 的原始问题。
删除 picocontainer jar 后的测试运行
我知道在这个项目中,我还没有设置一个包含共享状态 Webdriver 的类,以及步骤定义页面上的构造函数。我有另一个项目受到同样问题的影响,但我觉得如果我使用那个例子会使这个问题变得更加复杂。