package cucumber.examples.java.calculator; import cucumber.api.CucumberOptions; import cucumber.api.testng.TestNGCucumberRunner; import cucumber.api.testng.CucumberFeatureWrapper; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * An example of using TestNG when the test class does not inherit from * AbstractTestNGCucumberTests but still executes each feature as a separate * TestNG test. */ @CucumberOptions(format = "json:target/cucumber-report-feature-composite.json") public class RunCukesByFeatureAndCompositionTest extends RunCukesByCompositionBase { private TestNGCucumberRunner testNGCucumberRunner; @BeforeClass(alwaysRun = true) public void setUpClass() throws Exception { testNGCucumberRunner = new TestNGCucumberRunner(this.getClass()); } @Test(groups = "cucumber", description = "Runs Cucumber Feature", dataProvider = "features") public void feature(CucumberFeatureWrapper cucumberFeature) { testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature()); } @DataProvider public Object[][] features() { return testNGCucumberRunner.provideFeatures(); } @AfterClass(alwaysRun = true) public void tearDownClass() throws Exception { testNGCucumberRunner.finish(); } }