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?
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.