Cucumber test not running

13,485

Here is the solution to your Question:

  1. As per the current documentation of Cucumber you may require to change the keyword Scenario Outline to Scenario in test.feature file.
  2. Though you mentioned about TestRunner class but your code speaks about Runner class being implemented as public class Runner, be sure which class file are you executing as JUnit test.
  3. You may require to change @CucumberOptions to @Cucumber.Options for previous versions (recent versions work with @CucumberOptions)
  4. Put the following 2 parts in a single line as @Cucumber.Options (features="Features")
  5. As you would be mentioning @Cucumber.Options(features="Features") ensure that your feature file is placed inside Features sub-directory within the Project Directory.
  6. So you will be having, test.feature file within Features sub-directory with the following code:

    Feature: Login screen
        Scenario: Successful login
        Given User is on Login page
        When User enters valid UserName and Password
        And Clicks the login button
        Then User landed on the home page
    
  7. Your Runner class will look like:

    import org.junit.runner.RunWith;
    import cucumber.api.junit.Cucumber;
    @RunWith(Cucumber.class)
    @CucumberOptions(features="Features")
    public class Runner {
    
    }
    
  8. Finally when you will execute Runner class as a JUnit test you will see the following message on your console:

    You can implement missing steps with the snippets below:
    
    @Given("^User is on Login page$")
    public void User_is_on_Login_page() throws Throwable {
        // Express the Regexp above with the code you wish you had
        throw new PendingException();
    }
    
    @When("^User enters valid UserName and Password$")
    public void User_enters_valid_UserName_and_Password() throws Throwable {
        // Express the Regexp above with the code you wish you had
        throw new PendingException();
    }
    
    @When("^Clicks the login button$")
    public void Clicks_the_login_button() throws Throwable {
        // Express the Regexp above with the code you wish you had
        throw new PendingException();
    }
    
    @Then("^User landed on the home page$")
    public void User_landed_on_the_home_page() throws Throwable {
        // Express the Regexp above with the code you wish you had
        throw new PendingException();
    }
    
  9. These warnings can be taken care easily by implementing the glue options to Cucumber.

Let me know if this Answers your Question.

Share:
13,485
Bitz
Author by

Bitz

Updated on June 04, 2022

Comments

  • Bitz
    Bitz almost 2 years

    I am working on my first feature file/selenium project.

    I have created a feature file and runner class.

    package cucumberpkg2;
    import org.junit.runner.RunWith;
    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;
    @RunWith(Cucumber.class)
    @CucumberOptions
    (features="Features")	
    public class Runner {
    
    }
    I have the feature file test.feature

    Feature: Login screen
    
      Scenario Outline: Successful login
        Given User is on Login page
        When User enters valid UserName and Password
        And Clicks the login button
        Then User landed on the home page
    

    But whenever I try to run the TestRunner class as a JUnit test, I get the error:

    Test class not found in selected project.

  • undetected Selenium
    undetected Selenium almost 7 years
    Your solution will take care of only demo.feature (one) feature file, what if you have got multiple feature file :)
  • Gaurang Shah
    Gaurang Shah almost 7 years
    @Dev i takes multiple feature file, I have updated the answer. However the better thing would be to use Tags. provide tags to feature and then use them.
  • undetected Selenium
    undetected Selenium almost 7 years
    Yup, you are right :) rather I would pass the name of folder containing the features