Cucumber options annotation

前端 未结 3 1534
粉色の甜心
粉色の甜心 2020-12-29 06:48

The cucumber-jvm javadocs states that purpose of the glue element is to specify the location of the stepdefinitions and hooks. However, this doesn\'t seem to work for me. Le

相关标签:
3条回答
  • 2020-12-29 06:49

    Hi as per my knowledge it all depends on the structure of you project. For example if you add the "Directory_a" ( directory which contains feature files) in the root level and StepDefinition, Hooks at src > test > java "Directory_b" And the TestRunner class at the same level ( src > test > java ) in "Directory_c"

    Dir_a
    |
    src
       |---main
       |---test
              |------java
                         |------Dir_b
                         |------Dir_c
    

    You saying "Dir_b" while you are in the "Dir_c" It will identify "Dir_b" or any directory in same level with out any additional paths so, It will be glue = {"Dir_b"}, But when you look at the directory that includes feature file you have to give the path from the root level In this case it's features = {"Dir_a"} or Giving the actual path eg :- "E://Project_Name//Dir_a" should work too

    If your feature directory is NOT in root level make sure you give the path like "src/path to feature directory"

    It will work fine :)

    0 讨论(0)
  • 2020-12-29 06:51

    I had this problem too... and so far it seems to be that:

    "features" is looking for a filesystem path:

    features = "src/foo/bar"
    

    whereas "glue" is looking for a package name:

    glue = "foo.bar"
    

    Not sure why they are different, but this seems to be working for me.

    0 讨论(0)
  • 2020-12-29 07:01

    I have successfully used something like:

    @RunWith(Cucumber.class)
    @Cucumber.Options(
        //this code will only look into "features/" folder for features
        features={"classpath:features/"},
        glue = { "com.mycompany.cucumber.stepdefinitions", "com.mycompany.cucumber.hooks" },
        format = { "com.mycompany.cucumber.formatter.RuntimeInfoCatcher", "json:target/cucumber.json" },
        tags = { "@working" }
        )
    public class CucumberStarterIT {
    }
    

    Looking at the doc at http://cukes.info/api/cucumber/jvm/javadoc/cucumber/api/junit/Cucumber.Options.html it specifies the options to be of type String[] so perhaps it's not expected to work "well" if you don't give it a single-value list. Try glue={"directory_b"} and see what happens for you.

    0 讨论(0)
提交回复
热议问题