4

我是 Cucumber java 的新手,在初始阶段遇到了这个问题:由于某种原因,我没有使用 MAVEN 项目。我刚刚在eclipse中创建了一个简单的java项目。

我在“src/dummy/pkg/features”下有我的功能,我的实现“StepDef.java”在“src/dummy/pkg/features/implementation”下

我已经为 Given、When 和 Then 编写了步骤定义,但是当我运行我的功能文件时,它无法识别实现。如何将功能与步骤定义联系起来?

4

4 回答 4

6

创建一个类YourClass,它看起来像下面这样,并将其作为 JUnit 测试运行。

@RunWith(Cucumber.class)

@CucumberOptions(  monochrome = true,
                     features = "src/dummy/pkg/features/",
                       format = { "pretty","html: cucumber-html-reports",
                                  "json: cucumber-html-reports/cucumber.json" },
                         glue = "your_step_definition_location_package" )

public class YourClass {
  //Run this from Maven or as JUnit
}
于 2014-10-08T11:19:27.860 回答
2

您必须将您的项目转换为 Cucumber 项目。从 Project Explorer > Configure > Convert as Cucumber Project 中右键单击您的项目。

于 2020-10-10T22:54:40.930 回答
1

创建一个类似这样的运行器类,您应该能够执行。也不需要手动编写步骤定义,只需创建一个特征文件并运行它,它将创建一个步骤定义的片段,可用于创建步骤定义类:

运行黄瓜需要一个名为 Runnerclass 的类文件:

@RunWith(Cucumber.class)
@CucumberOptions(plugin={"pretty","html:format"},

features = "Features/name.feature",glue={"path where step definitions exist"})
public class RunnerClass {

}
于 2017-04-11T10:19:30.547 回答
1

当您运行 Runner 类时,它将扫描功能选项中提到的所有功能文件,然后加载它们,然后由胶水选项中提到的文本启动的包中的所有步骤定义将被加载。例如

@RunWith(Cucumber.class)
@CucumberOptions(
        plugin = { "pretty","json:target/cucumberreports.json" }, 
        glue = "stepDefinition", 
        features = "src/test/resources/TestCases/", 
        tags={"@onlythis"},
        dryRun=false
    )
public class RunTest {

}

这里存在的所有功能文件

src/test/resources/TestCases/

将被加载

然后将加载其中的所有stepdef或其子目录

步骤定义

并且每当您的功能步骤运行时,黄瓜将查找与步骤的正则表达式相对应的功能,并且功能将运行。

例如

每当 step当用户在 src/test/resources/TestCases/Login.feature 中输入电子邮件 id时,cucumber 将在所有 stepdef 类中找到其对应的函数

Login.feature
@LoginValidation 
Feature: To smoke test functionalities of app 

@Browser @ValidLogin 
Scenario: Verify scenario in case of successful login 
    When User enters email id 
    And User enters password 
    Then User clicks on sign in button and able to sign in 

并且它会到达 stepDefinition 的子目录中的类,stepDefinition.ui.home.LoginPageStepDef.java中,黄瓜会找到带有@When("^User enters email id$")的函数并执行此函数。

LoginPageStepDef.java
public class LoginPageStepDef {

    LoginPage loginPage = new LoginPage(AttachHooks.driver);
    private static Logger LOGGER = Logger.getLogger(LoginPageStepDef.class);

    @When("^User enters email id$")
    public void user_enters_email_id() throws Throwable {
        //LoginPage.obj = loginPage;
        loginPage.enterEmailId(ConfigManager.getProperty("UserName"));
    }
}
于 2018-05-29T18:00:57.990 回答