cucumber jvm CucumberException: No features found

2019-04-07 16:02发布

In my cucumber -jvm, Maven, junit Setup I have my testRunner file as

package com.lebara.testrunner;

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

@RunWith(Cucumber.class)
@Cucumber.Options(

glue = {"com.lebara.stepdefs","com.lebara.framework.main", "com.lebara.testrunner"},
features = "C:/Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources",
format = {"pretty", "html:target/cucumber-html-report", "json-pretty:target/cucumber-report.json"},
tags = {"@UserJourney"}

)
public class RunCukesTest {
}

I have my feature file in the above mentioned directory.

If I run it, I get the following exception:

cucumber.runtime.CucumberException: No features found at [C:/Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources/cucumber]...

If I remove the "features" option in the testrunner, it tries to look for feature files in the same directory as my testrunner.java

cucumber.runtime.CucumberException: No features found at [com/lebara/testrunner]

And if I put the feature files there, it works.

My question is why is my feature file not being picked up from my previous location, which I thought to be the default file structure for cucumber - maven setup.

How do I make it pick up from there? Help appreciated.

5条回答
SAY GOODBYE
2楼-- · 2019-04-07 16:33

Where exactly are your test runner and feature files? I've got the following setup which works perfectly:

src/test/
    java/
        com/mypackage/
            TestRunner.java
            StepDefinition.java
    resources
        com/mypackage/
            fancy.feature

The Maven/Cuke conventions will have the tests executed from the tests/java directory and the feature files found in the test/resources directory. My test runner is basically the same as yours but with less options:

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

@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty"})
public class TestRunner { }

Hope this helps if you hadn't already found an answer.

查看更多
疯言疯语
3楼-- · 2019-04-07 16:33

If you are providing the complete path of the feature file i.e.

"C:/Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources" as in your query, try again by replacing the '/' character with '\\'(double back slash) as below.

"C:\\Users\\sarthak.dayanand\\Documents\\WebRefreshTest\\CukeAutomation\\LebaraWebAutomationTest1\\src\main\\resources\\abc.feature"

查看更多
够拽才男人
4楼-- · 2019-04-07 16:44

I have a setup similar to yours (not using the Maven/Cucumber conventions). In my options, I don't specify the path from root, but from the project's source folder where the features are held. It makes sense, since otherwise the tests would only be runnable from your machine.

In your case, I think it should be:

features = "src/main/resources"
查看更多
beautiful°
5楼-- · 2019-04-07 16:52

Just add features = { "classpath:features/feature.feature"}, and the feature must under test/resources/features/feature.feature.

    @CucumberOptions(
        format = {"pretty", "html:target/html"},
        features = {"classpath:features/feature.feature"},
        snippets = SnippetType.CAMELCASE

Note classpath.

When you compile your code if you are using maven open up target/test-classes/features and you will see feature.feature

查看更多
再贱就再见
6楼-- · 2019-04-07 16:58

By putting the feature file under src/test/java where the runner and steps file or by putting it under src/main/java the problem will get resolved.

Always welcome for your thanks.:)

查看更多
登录 后发表回答