我无法理解参数需要什么,任何人都可以帮助我。 我写了以下代码: -
@Test(groups = "cucumber", description = "Runs Cucumber Feature", dataProvider = "features")
public void feature(CucumberFeatureWrapper cucumberFeature) throws Exception {
testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature());
}
@AfterMethod(alwaysRun = true)
public void tearDown(Scenario scenario) {
scenario.write("Finished Scenario");
if (scenario.isFailed()) {
String screenshotName = scenario.getName().replaceAll(" ", "_");
try {
File sourcePath =((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
File destinationPath = new File(System.getProperty("user.dir") + "/Screenshots/" + screenshotName + ".png");
Files.copy(sourcePath, destinationPath);
Reporter.addScreenCaptureFromPath(destinationPath.toString());
} catch (IOException e) {
}
driver.close();
}
}
我收到以下错误: -
FAILED CONFIGURATION:@AfterMethod tearDown org.testng.TestNGException:方法tearDown需要1个参数但是 @Configuration注释中提供了0。
答案 0 :(得分:2)
您无法将Cucumber Scenario
对象传递给TestNg
配置方法。 AfterMethod
将由TestNg
调用,无法注入Scenario
对象。有关自动注入的对象列表,请参阅 - http://testng.org/doc/documentation-main.html#native-dependency-injection
使用Cucumber的After
注释并传递Scenario
对象。
@cucumber.api.java.After
public void tearDown(Scenario scenario)
或者使用TestNg的AfterMethod
并传递ITestResult
对象。
@org.testng.annotations.AfterMethod
public void tearDown(ITestResult result)