io.cucumber.testng.AbstractTestNGCucumberTests Maven / Gradle / Ivy
package io.cucumber.testng;
import org.apiguardian.api.API;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* Abstract TestNG Cucumber Test
*
* Runs each cucumber scenario found in the features as separated test.
*
* @see TestNGCucumberRunner
*/
@API(status = API.Status.STABLE)
public abstract class AbstractTestNGCucumberTests {
private TestNGCucumberRunner testNGCucumberRunner;
@BeforeClass(alwaysRun = true)
public void setUpClass() {
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
}
@SuppressWarnings("unused")
@Test(groups = "cucumber", description = "Runs Cucumber Scenarios", dataProvider = "scenarios")
public void runScenario(PickleWrapper pickleWrapper, FeatureWrapper featureWrapper) throws Throwable {
// the 'featureWrapper' parameter solely exists to display the feature file in a test report
testNGCucumberRunner.runScenario(pickleWrapper.getPickle());
}
/**
* Returns two dimensional array of {@link PickleWrapper}s
* with their associated {@link FeatureWrapper}s.
*
* @return a two dimensional array of scenarios features.
*/
@DataProvider
public Object[][] scenarios() {
if (testNGCucumberRunner == null) {
return new Object[0][0];
}
return testNGCucumberRunner.provideScenarios();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() {
if (testNGCucumberRunner == null) {
return;
}
testNGCucumberRunner.finish();
}
}