Search code examples
cucumbercucumber-java

Cucumber steps undefined messages even though I defined them


When I run Cucumber tests, even after implementing step definitions, the console O/P states that the steps are undefined. Why is that?

**Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Mar 21, 2019 1:28:49 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS

Feature: Automation

  Scenario: Login Test                  [90m# Login.feature:3[0m
    [33mGiven [0m[33mUser opens the browser[0m
    [33mGiven [0m[33muser is on the login page[0m
    [33mThen [0m[33muser logs into the application[0m
    [33mThen [0m[33muser is in home page[0m

1 Scenarios ([33m1 undefined[0m)
4 Steps ([33m4 undefined[0m)
0m0.000s


You can implement missing steps with the snippets below:

@Given("^User opens the browser$")
public void user_opens_the_browser() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Given("^user is on the login page$")
public void user_is_on_the_login_page() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Then("^user logs into the application$")
public void user_logs_into_the_application() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Then("^user is in home page$")
public void user_is_in_home_page() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

===============================================
Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

Solution

  • From the FAQ:

    "If Cucumber is telling you that your steps are undefined, when you have defined step definitions, this means that Cucumber cannot find your step definitions. You’ll need to make sure to specify the path to your step definitions (glue path) correctly.

    By default Cucumber-JVM will search in the package (or sub-packages) of the runner class. You can also tell Cucumber-JVM explicitly which packages (and sub-packages) to search, with:

     @CucumberOptions(glue = {"<package>", "<package>", "<etc>"})
     public class RunCucumberTest{}
    

    "