猿问

标记黄瓜场景功能

我经历了一些非常奇怪的事情。也许有人可以解释我在哪里犯了错误。我的功能文件中有以下场景


@DeleteUserAfterTest

Scenario: Testing a functionality

Given admin exists

When a user is created

Then the user is verified

我在 Hooks 类中的 @After 方法如下所示


@After

public void tearDown(Scenario scenario) {

    if (scenario.isFailed()) {

        final byte[] screenshot = ((TakesScreenshot) driver)

                .getScreenshotAs(OutputType.BYTES);

        scenario.embed(screenshot, "image/png"); //stick it in the report

    }

    driver.quit();

}

我在步骤定义中使用以下方法来根据测试场景中传递的标签删除创建的用户,如下所示:


@After("@DeleteUserAfterTest")

public void deleteUser(){

//Do fucntionalities to delete user

}

我的测试运行程序看起来像这样:


import io.cucumber.testng.AbstractTestNGCucumberTests;

import io.cucumber.testng.CucumberOptions;


@CucumberOptions(

    plugin = {"pretty","com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:", "json:target/cucumber-report/TestResult.json"},

    monochrome = false,

    features = "src/test/resources/features/IntegrationScenarios.feature",

    tags="@DeleteUserAfterTest",

    glue="Steps")

public class IntegrationTest extends AbstractTestNGCucumberTests {

}

但是,当我启动测试用例时,有时我的用户会在 After("@DeleteUserAfterTest") 中被删除,但有时我的测试根本无法识别标记的 After 。它直接转到我的 Hooks 类中的 After 方法并退出驱动程序。也许有人遇到过这个问题或者知道解决方法!


扬帆大鱼
浏览 90回答 1
1回答

交互式爱情

Java 中没有定义方法顺序。所以你必须告诉 Cucumber 你的钩子应该按照什么顺序执行。较高的数字首先运行(在钩子之前运行相反)。@After(order = 500)public void tearDown(Scenario scenario) {}@After(value = "@DeleteUserAfterTest", order = 1000)public void deleteUser(){}
随时随地看视频慕课网APP

相关分类

Java
我要回答