org.testng.TestNGException:方法tearDown需要1个参数,但@Configuration注释中提供了0

时间:2018-05-20 09:27:01

标签: cucumber testng

我无法理解参数需要什么,任何人都可以帮助我。 我写了以下代码: -

 @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。

1 个答案:

答案 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)