【问题标题】:Tagged Cucumber Scenarios Functioning标记的黄瓜场景运行
【发布时间】:2019-10-16 12:51:03
【问题描述】:

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

@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 方法并退出驱动程序。也许有人遇到过这个问题或知道解决方法!

【问题讨论】:

    标签: java selenium cucumber


    【解决方案1】:

    Java 中没有定义方法顺序。所以你必须告诉 Cucumber 你的钩子应该按什么顺序执行。首先运行较大的数字(在挂钩之前相反)。

    @After(order = 500)
    public void tearDown(Scenario scenario) {
    
    }
    
    @After(value = "@DeleteUserAfterTest", order = 1000)
    public void deleteUser(){
    
    }
    

    【讨论】:

    • 非常感谢伙计。它完美地工作。我犯的错误是在标签中给出了错误的顺序。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多