'Cucumber cannot find StepDefinitions while running the code but manually using the option "Find Step" can find step definition
In the project Structure defined like below,
When I run from RunCukesTest.java using RunAs --> JUnit Test,
Step Definitions cannot be found by runner
When I click find Step, opens the right file. Couldn't understand where the issue is because the code was running few days back. File is downloaded from here
https://drive.google.com/open?id=0B4SgyzyvwKhiVTRmRDZuNXNTSjA
Runner class code
package helpers;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
//features= "src/test/resources/features/navigation",
@RunWith(Cucumber.class)
@CucumberOptions(
features = {"classpath:features"},
plugin = {"pretty", "html:target/cucumber-html-report"},
tags = {"@OnlyOneTime"},
// dryRun = true,
monochrome = true
)
public class RunCukesTest{
}
Solution 1:[1]
Glue code is supposed to have path to hooks and step definitions
So modified as glue={"helpers","stepDefinitions"}
instead of
glue={"helpers","classpath/stepDefinitions", "classpath/stepDefinitions.LogIn","classpath/stepDefinitions.Publish"}
Please refer to this link Similar issue on github
Solution 2:[2]
Running it as a Cucumber feature, it works well, but if I provide glue={"stepDefinitions"} and try running it from runner then NullPointerException is thrown,
This problem is arising from hooks not being found. But If I move @Before and @After to the SDLogin classs, then It works well.
Solution 3:[3]
I figured out your issue, As per your runner class, the glue path is not set. please set glue path.glue={"stepDefinitions"}
package helpers;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
//features= "src/test/resources/features"@RunWith(Cucumber.class) @CucumberOptions(
features = {"classpath:features"}, glue={"stepDefinitions"},plugin = {"pretty", "html:target/cucumber-html-report"}, tags = {"@OnlyOneTime"}, // dryRun = true, monochrome = true )
public class RunCukesTest{ }
Solution 4:[4]
In my case , feature files are in src/test/resources/Features/login.feature Step definitions are in com.steps.definitions
So giving like below solved the issue.
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(
features = {"src/test/resources/Features/login.feature"}, glue={"com.steps.definitions"},plugin = {"pretty", "html:target/cucumber-html-report"})
public class TestRunner {
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Nagarjuna Reddy |
Solution 2 | Kushal Bhalaik |
Solution 3 | Mahipal |
Solution 4 | Sameera De Silva |