1

我正在尝试使用多个步骤定义文件构建 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 的类,以及步骤定义页面上的构造函数。我有另一个项目受到同样问题的影响,但我觉得如果我使用那个例子会使这个问题变得更加复杂。

4

0 回答 0