将picocontainer jar添加到java构建路径时未找到Cucumber框架方案

将picocontainer jar添加到java构建路径时未找到Cucumber框架方案,java,cucumber,bdd,gherkin,picocontainer,Java,Cucumber,Bdd,Gherkin,Picocontainer,我正在尝试构建一个包含多个步骤定义文件的Cucumber BDD框架。我仍在努力理解如何使用picocontainer来运行步骤定义文件。我的问题是,一旦我将PicoContainerJAR添加到项目的构建路径中,当执行测试运行程序时,它就无法找到任何场景或步骤 控制台 Java项目构建路径 我的项目包括: • A feature file • 2 step definition files • 1 test runner • Utilities package with a webdriv

我正在尝试构建一个包含多个步骤定义文件的Cucumber BDD框架。我仍在努力理解如何使用picocontainer来运行步骤定义文件。我的问题是,一旦我将PicoContainerJAR添加到项目的构建路径中,当执行测试运行程序时,它就无法找到任何场景或步骤

控制台

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罐后的试运行


我知道在这个项目中,我还没有在步骤定义页面上设置一个包含共享状态Webdriver和构造函数的类。我有另一个项目受到这个问题的影响,但我觉得如果我使用这个例子,这个问题会变得更复杂。

我通过将picocontainer jar版本从1.2.5替换为1.1.5来解决这个问题。我在网上学习了很多不同的教程,他们使用了1.2.5或1.2.4(这两个版本都不适合我)。有没有人听说过1.2.5中的任何已知问题可能是导致这种情况的原因?我将继续使用1.1.5构建我的框架,但我担心使用这个过时的版本可能会进一步导致问题,我更希望使用更新的版本。Features文件夹是否在src目录之外?尝试将features文件夹移动到src文件夹中,并将cucumberoptions中的features值用作“/src/features”。你好,蚱蜢。谢谢你的回复。我尝试将Features文件夹移动到src文件夹中,并尝试使用picocontainer 1.2.5(和1.2.4)运行测试,但测试仍然无法找到场景文件。但是,当恢复到pico 1.1.5时,这与将Feature文件夹放在src文件夹之外一样有效(实际上我更喜欢将其放在src文件夹中,所以我想我会将其保留在那里)。我注意到,当试图在src文件夹中创建一个文件夹时,它变成了一个包。这应该是预期的吗?它应该仍然是一个文件夹。我是从eclipse添加的吗?我尝试了两种不同的方法。第一种方法是复制原始Features文件夹,然后将其粘贴到src文件夹中。这导致“功能”文件夹成为包含功能文件的程序包文件夹。第二种方法是右键单击src文件夹,然后选择“新建>文件夹”。命名文件夹后,它被自动创建为一个包。我通过将PicoContainerJAR版本从1.2.5替换为1.1.5解决了这个问题。我在网上学习了很多不同的教程,他们使用了1.2.5或1.2.4(这两个版本都不适合我)。有没有人听说过1.2.5中的任何已知问题可能是导致这种情况的原因?我将继续使用1.1.5构建我的框架,但我担心使用这个过时的版本可能会进一步导致问题,我更希望使用更新的版本。Features文件夹是否在src目录之外?尝试将features文件夹移动到src文件夹中,并将cucumberoptions中的features值用作“/src/features”。你好,蚱蜢。谢谢你的回复。我尝试将Features文件夹移动到src文件夹中,并尝试使用picocontainer 1.2.5(和1.2.4)运行测试,但测试仍然无法找到场景文件。但是,当恢复到pico 1.1.5时,这与将Feature文件夹放在src文件夹之外一样有效(实际上我更喜欢将其放在src文件夹中,所以我想我会将其保留在那里)。我注意到,当试图在src文件夹中创建一个文件夹时,它变成了一个包。这应该是预期的吗?它应该仍然是一个文件夹。我是从eclipse添加的吗?我尝试了两种不同的方法。第一种方法是复制原始Features文件夹,然后将其粘贴到src文件夹中。这导致“功能”文件夹成为包含功能文件的程序包文件夹。第二种方法是右键单击src文件夹,然后选择“新建>文件夹”。命名文件夹后,它会自动创建为一个包。