我正在尝试使用多个步骤定义文件来构建Cucumber BDD框架。我仍在尝试了解如何使用picocontainer运行步骤定义文件。我的问题是,一旦我将picocontainer jar添加到项目的构建路径中,在执行测试运行程序时,它将找不到任何方案或步骤。
控制台
Java项目构建路径
我的项目包含:
• A feature file
• 2 step definition files
• 1 test runner
• Utilities package with a webdriver initializer method
我的功能文件具有以下步骤:
前两个小黄瓜步骤被粘贴到以下步骤定义类中的方法上:
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 {
}
来自测试运行器的控制台结果
但是,当我删除picocontainer时,将找到场景和步骤。这将使我面临无法使用共享状态Webdriver的原始问题。
删除picocontainer jar后测试运行
我知道在这个项目中我还没有建立一个类,它将包含共享状态Webdriver和步骤定义页面上的构造函数。我还有另一个项目也受同一问题的影响,但是我觉得如果使用该示例,它将使这个问题更加复杂。
我正面临相同的问题,如果有人对此有解决方案,请回复。
非常感谢。