Cucumber test not running
13,485
Here is the solution to your Question:
- As per the current documentation of Cucumber you may require to change the keyword
Scenario Outline
toScenario
intest.feature
file. - Though you mentioned about
TestRunner
class but your code speaks aboutRunner
class being implemented aspublic class Runner
, be sure which class file are you executing asJUnit test
. - You may require to change
@CucumberOptions
to@Cucumber.Options
for previous versions (recent versions work with@CucumberOptions
) - Put the following 2 parts in a single line as
@Cucumber.Options (features="Features")
- As you would be mentioning
@Cucumber.Options(features="Features")
ensure that your feature file is placed insideFeatures
sub-directory within the Project Directory. -
So you will be having,
test.feature
file withinFeatures
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
-
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 { }
-
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(); }
These warnings can be taken care easily by implementing the
glue
options to Cucumber.
Let me know if this Answers your Question.
Author by
Bitz
Updated on June 04, 2022Comments
-
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 { }
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 almost 7 yearsYour solution will take care of only
demo.feature
(one) feature file, what if you have got multiple feature file :) -
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 almost 7 yearsYup, you are right :) rather I would pass the name of folder containing the features