Cucumber-JVM:Cucumber的@After钩子被执行两次

nic*_*las 6 testng cucumber-jvm

我正在实施Cucumber Testng用于学习目的.我意识到@After钩子方法执行了两次.我可以通过调试集和测试报告输出来确认它.我只运行1个功能文件,我的测试报告显示两个具有相同类名的条目.

有谁知道为什么?

在此输入图像描述

码:

@After
    public void tearDown(Scenario scen) throws IOException {
        ExtentTest logger = reportMgr.getLogger();
        String feature = getClass().getName() + " Feature";    //+ "." + Thread.currentThread().getStackTrace()[1].getMethodName().toString();

        logger = reportMgr.getExtent().createTest(feature);

        String screenShot = CaptureScreenshot.captureScreen(WebDriverManager.driver, CaptureScreenshot.generateFileName(feature));
        if (!scen.isFailed()) {
            logger.pass("Pass");
            logger.addScreenCaptureFromPath(screenShot);
        } else {
            logger.fail("Fail");
            logger.addScreenCaptureFromPath(screenShot);
        }
    }
Run Code Online (Sandbox Code Playgroud)

专题文件:

@Login_Valid Feature: Login to Volare Collector Description:  As a user, I want login to Volare Collector 

  Scenario: Valid Login
    Given Volare Collector Home Page opens in browser
    When I login to Volare Collector with Username and Password
    Then Page navigate to Volare Collector Home Page
Run Code Online (Sandbox Code Playgroud)

功能文件中有一个警告称为多个定义"Volare Collector主页在浏览器中打开".

请从此链接下载我的源代码.

小智 0

我假设您使用的是 TestNG 6.8 或更高版本

使用以下测试类模板并检查您是否有问题

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

class PlaygroundTest {

  @BeforeClass
  public void setUp(){

  }

  @AfterClass
  public void tearDown() {

  }

  @Test
  public void test(){

  }
}
Run Code Online (Sandbox Code Playgroud)