首页 > 解决方案 > @After 不起作用(带有 SenerityBDD 的黄瓜)

问题描述

我的问题:我正在使用 Cucumber 和 senerityBDD JAVA。在我的项目中,@after 在我阅读的 senerity 文档之后无法工作。

我的钩子类:

package com.TestSuite;

import cucumber.api.CucumberOptions;
import cucumber.api.java.After;
import net.serenitybdd.core.Serenity;
import net.serenitybdd.cucumber.CucumberWithSerenity;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
    
import static com.netdreamers.utils.Performance.PerformanceController.*;

@RunWith(CucumberWithSerenity.class)
@CucumberOptions(features = "src/test/resources/features", tags = "@testCase")

public class TestSuite{

    @BeforeClass
    public static void beforeClass(){
        System.out.println("Start BeforeClass");   
   }

    @AfterClass
    public static void afterClass() {
       System.out.println("Start AfterClas");   

    }

    @After
    public void afterScenario(){
        System.out.println("After Scenario");
    }
}

我的功能文件:

Feature: Access to Url

  Background:

  Scenario Outline: Access to Url
    Given I access to the Url at line "<index>"
    Examples:
      | index |
      | 0     |
      | 1     |

正如预期的那样,@after 注释应该可以工作,它应该在场景之后调用。所以请有人可以告诉我当场景 Ouline 为示例表“索引”变量重复时,@after 注释在 2 循环后不起作用的原因?

标签: javacucumber-serenity

解决方案


AFAIK@After仅适用于步骤代码。将您的选项更新为

@CucumberOptions(features = "src/test/resources/features", glue = 
        "com.testsuite.steps", tags = "@testCase" )

并将后代码移动到新的步骤类

 package com.testsuite.steps;

 import cucumber.api.java.After;

 public class TestSteps {
    
        @After
        public void afterScenario(){
            System.out.println("After Scenario");
        }
 }

推荐阅读