Search code examples
javacucumbercucumber-jvmcucumber-junit

Cucumber-JVM Step definitions


After creating my feature file in eclipse, i run it as a Cucumber feature. i use the step definition the console gives me to create the first base of the test file

@Given("^the input is <(\\d+)> <(\\d+)>$")

these should be outputted by the console however currently it is showing the feature without the step definitions.

Feature: this is a test
  this test is to test if this test works right

  Scenario: test runs # src/test/resources/Test.feature:4
    Given: i have a test
    When: i run the test
    Then: i have a working test


0 Scenarios
0 Steps
0m0,000s

this feature is just to check if cucumber is working properly.

the runner:

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
        monochrome = true,
        dryRun = false,
        format = "pretty",
        features = "src/test/resources/"
        )
public class RunCukes {
}

what can be the cause of the console not showing all the info?

TL:DR console does not show the step regex for missing steps

EDIT: added feature file

Feature: this is a test
  this test is to test if this test works right

  Scenario: test runs
    Given: i have a test
    When: i run the test
    Then: i have a working test

Solution

  • The problem is in the feature file. Using : after Given, When and Then is the problem. I was able to reproduce your issue with your feature file. But when I removed the : and ran the feature file, with the same Runner options provided above, I got the regex to implement missing step definitions.

    P.S I am using IntelliJ, but don't think it would make a difference.

      Feature: this is a test
      this test is to test if this test works right
    
      Scenario: test runs # src/test/resources/Test.feature:4
        Given i have a test
        When i run the test
        Then i have a working test
    

    Below is what I got:

    Testing started at 19:12 ...
    
    Undefined step: Given  i have a test
    
    1 Scenarios (1 undefined)
    3 Steps (3 undefined)
    0m0.000s
    
    Undefined step: When  i run the test
    
    You can implement missing steps with the snippets below:
    @Given("^i have a test$")
    
    public void i_have_a_test() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }
    
    @When("^i run the test$")
    public void i_run_the_test() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }
    
    @Then("^i have a working test$")
    public void i_have_a_working_test() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }
    
    
    Undefined step: Then  i have a working test
    
    1 scenario (0 passed)
    3 steps (0 passed)
    Process finished with exit code 0