微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在黄瓜@AfterStep 中不要在版本上执行:5.7.0

如何解决在黄瓜@AfterStep 中不要在版本上执行:5.7.0

我正在使用黄瓜、testng 项目并将最新的黄瓜集成到其中。 如果我在我的跑步者类中使用 TestNg 注释,它们将执行得很好。但是如果我在我的跑步者类中使用黄瓜注释,它将不会执行。 所以我很困惑为什么并为此寻找原因。

在我执行“TestCases”类后,下面的代码块“tearDown”方法不会执行。 功能文件执行到最后都没有任何问题,但 '@AfterStep' 方法不执行。 我的依赖项有什么问题吗?

由于我使用带有 testng 的黄瓜 5.7.0 '@AfterStep' 被导入
'导入 io.cucumber.java.AfterStep;'

import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import io.cucumber.java.AfterStep;

public class TestCases extends AbstractTestNGCucumberTests {


@CucumberOptions(
        plugin = {"pretty","html:target/cucumber-html-report","json:target/cucumber-report.json"},features = {"src/test/resources/featureFiles/",},glue = {"com.tests.testSteps"},tags = {"@regressiontest"})

     @AfterStep
        public void tearDown() {
            System.out.println("========= This line not executing ===========");
       
        }
}

POM file configuration as below:

<dependencies>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>5.7.0</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java8</artifactId>
        <version>5.7.0</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>5.7.0</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>5.7.0</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-jvm-deps</artifactId>
        <version>1.0.6</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>5.7.0</version>
    </dependency>
</dependencies>

解决方法

也许你应该把@AfterStep 放在步骤定义中。我用 cucumber-java 6.9.1 对其进行了测试,效果很好。但是,我将它与 junit 一起使用。我的pom看起来像这样

<junit.version>4.13.1</junit.version>
<cucumber.version>6.9.1</cucumber.version>
...
...
 <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>cucumber-java</artifactId>
      <version>${cucumber.version}</version>
      <scope>test</scope>
    </dependency>
      
      <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>${cucumber.version}</version>
        <scope>test</scope>
    </dependency>
      
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
</dependency>

使您的跑步者文件不同于步骤定义。这是我的跑步者文件

@RunWith(Cucumber.class)
@CucumberOptions
  (
       plugin = {
                "pretty","json:target/AcceptanceTestResults.json"
        },features = "src/test/resources/com/test/RestAssured.feature",glue = {"com.test.stepdefs"}
                    
)
public class AcceptanceIT {
}

然后把你的步骤定义放在一个差异类中

public class RestAssuredIT { 

 ....
 ....
@AfterStep // this imports from  io.cucumber:cucumber-java:6.9.1
    public void afterEveryStep(){

        //this prints after each step in feature file
        System.out.println("***after every step****");
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。