Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cucumber test not running

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.

like image 893
Bitz Avatar asked Oct 23 '25 02:10

Bitz


1 Answers

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.

like image 147
undetected Selenium Avatar answered Oct 25 '25 16:10

undetected Selenium



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!