cucumbertestngcucumber-javatestng.xml

Can we pass Cucumber Options values like Features and Tags values dynamically from TestNg.xml file?


I am trying to run my regression test suite from TestNg.xml file. Most Testcases use different tags and different feature filenames. So i want to pass these input as a parameter from TestNg.xml file.

I currently have duplicate runner class with different combination of tags to handle this problem. Is there any solution for this issue?


Solution

  • This is possible. See Cucumber TestNG - README md.

    Suppose you have a runner class like this:

    package com.example;
    
    import io.cucumber.testng.AbstractTestNGCucumberTests;
    
    public class RunCucumberTest extends AbstractTestNGCucumberTests {
    }
    

    You can use it multiple times in testng.xml.

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="Example Suite">
        <parameter name="cucumber.filter.tags" value="@Gherkin and not @Zucchini" />
        
        <test name="Vegetable garden" preserve-order="true">
            <parameter name="cucumber.features" value="classpath:com/example/features/vegetable"/>
            <parameter name="cucumber.glue" value="com.example.vegetables.glue"/>
            <classes>
                <class name="com.example.RunCucumberTests"/>
            </classes>
        </test>
        
        <test name="Herb garden" preserve-order="true">
            <parameter name="cucumber.features" value="classpath:com/example/features/herbs"/>
            <parameter name="cucumber.glue" value="com.example.herbs.glue"/>
            <classes>
                <class name="com.example.RunCucumberTests"/>
            </classes>
        </test>
    </suite>
    

    For a list of properties see Cucumber Core - README.md.