首先,Cucumber 有 .feature 文件而不是测试文件。
回答你的第一个问题: 1. testng 中@Runwith(Cucumber.class) 的替代品是什么? “使用 TestNG 运行时不需要 @RunWith”
我不明白你的第二个问题,但你需要了解 Cucumber 运行结束时默认执行 Runner 类,并且你已经在 @CucumberOptions 部分定义了功能文件。
为了更清楚,您可以使用 TestNG 轻松实现和运行 Cucumber 项目。整个游戏在你的 pom.xml 文件和 Runner 类中。
以下详细信息还说明您可以使用 TestNG 在 cucumber 中运行每个场景作为测试。
怎么样?解释如下:
首先,将你的 Cucumber Maven 依赖项从 info.cukes 更新为 io.cucumber 依赖项
在 Cucumber Runner 类中遵循 Java 代码非常适合我在功能文件中将每个场景作为 TestNG 测试运行:
@CucumberOptions(features = "src/test/resources", plugin = "json:target/cucumber-report-feature-composite.json")
public class TestRunner {
private TestNGCucumberRunner testNGCucumberRunner;
@BeforeClass(alwaysRun = true)
public void setUpClass() throws Exception {
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
}
@Test(groups = "cucumber scenarios", description = "Runs Cucumber
Scenarios", dataProvider = "scenarios")
public void scenario(PickleEventWrapper pickleEvent, CucumberFeatureWrapper
cucumberFeature) throws Throwable{
testNGCucumberRunner.runScenario(pickleEvent.getPickleEvent());
}
@DataProvider
public Object[][] scenarios() {
return testNGCucumberRunner.provideScenarios();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() throws Exception {
testNGCucumberRunner.finish();
}
}
使用 mvn clean test 命令运行,看看神奇:)
我很高兴看到您的问题得到解决。如果此问题仍未解决,请告诉我。
参考:https://github.com/cucumber/cucumber-jvm/blob/master/testng/README.md
我遵循了这种方法:https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator-testng/src/test/java/cucumber/examples/java/calculator/RunCukesByCompositionTest.java