Я пережил нечто действительно странное. Может быть, кто-то может объяснить мне, где я делаю ошибку. У меня есть следующий сценарий в файле объектов
@DeleteUserAfterTest
Scenario: Testing a functionality
Given admin exists
When a user is created
Then the user is verified
Мой метод @After в классе Hooks выглядит следующим образом:
@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. Он напрямую переходит к методу After в моем классе Hooks и выходит из драйвера. Возможно, кто-то сталкивался с этой проблемой или знает обходной путь!