我经历了一些非常奇怪的事情。也许有人可以解释我在哪里犯了错误。我的功能文件中有以下场景@DeleteUserAfterTestScenario: Testing a functionalityGiven admin existsWhen a user is createdThen the user is verified我在 Hooks 类中的 @After 方法如下所示@Afterpublic 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 方法并退出驱动程序。也许有人遇到过这个问题或者知道解决方法!
1 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
Java 中没有定义方法顺序。所以你必须告诉 Cucumber 你的钩子应该按照什么顺序执行。较高的数字首先运行(在钩子之前运行相反)。
@After(order = 500)
public void tearDown(Scenario scenario) {
}
@After(value = "@DeleteUserAfterTest", order = 1000)
public void deleteUser(){
}
添加回答
举报
0/150
提交
取消