Mdomin45
Mdomin45

Reputation: 469

Cucumber not finding default step definition class

My cucumber runner class cannot seem to find my step definition class, but it finds the feature file just fine.

Here is a snapshot of my very simple project structure:enter image description here

Feature file:

Feature: Customer must be able to reach the Home Delivery page by clicking the Home Delivery button

Scenario: Test Home Delivery button
    Given PS Restaurants web page is open
    When User clicks on Home Delivery button
    Then Home Delivery page should load

Step Definition class:

package stepDefinitions;

import java.util.concurrent.TimeUnit;

public class E_1_US_1 {
@Given("^PS Restaurants web page is open$")
public void ps_Restaurants_web_page_is_open() throws Exception {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@When("^User clicks on Home Delivery button$")
public void user_clicks_on_Home_Delivery_button() throws Exception {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Then("^Home Delivery page should load$")
public void home_Delivery_page_should_load() throws Exception {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}
}

Runner class:

package runner;

import org.junit.runner.RunWith;


import cucumber.api.junit.Cucumber;
import cucumber.api.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(
        features= {"src/features/Feature_1_1.feature"},
        glue= {"src/stepDefinitions/E_1_US_1.java"}
)
public class Runner {

}

The output from running the Runner class as a JUnit test:

1 Scenarios ([33m1 undefined[0m)
3 Steps ([33m3 undefined[0m)
0m0.040s


You can implement missing steps with the snippets below:

@Given("^PS Restaurants web page is open$")
public void ps_Restaurants_web_page_is_open() throws Exception {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@When("^User clicks on Home Delivery button$")
public void user_clicks_on_Home_Delivery_button() throws Exception {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Then("^Home Delivery page should load$")
public void home_Delivery_page_should_load() throws Exception {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

I just copied and pasted the output into my step definitions class and it still won't recognize the step definitions class. Earlier it was saying that there was no matching glue code for each step in the scenario, but that went away after I closed and reopened the feature file.

Upvotes: 0

Views: 1103

Answers (1)

CMM
CMM

Reputation: 573

You can update your runner class as below:

package runner;

import org.junit.runner.RunWith;


import cucumber.api.junit.Cucumber;
import cucumber.api.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(
        features= {"src/features"}, //It will pick all the feature files located in this folder
        glue= {"stepDefinitions"} //Only package name is required here.
)
public class Runner {

}

Upvotes: 1

Related Questions