Как справиться с неудачным тестом в JBehave / Thucydides / Selenium?
Я довольно новичок в Thucydides / JBehave, но не нашел никаких решений, опубликованных для этого. Я впервые использую Thucydides / JBehave, но раньше использовал Selenium.
У меня есть файл.story. Файл.story содержит 5 сценариев. Каждый сценарий реализован в своем собственном Java-классе POJO. например
public class ManagerBypassLoginSteps
{
@Steps
ManagerSteps managerSteps;
@Given("the manager is not logged in")
public void mangerLogsIn()
{
managerSteps.start();
}
@When("the manager goes to a different page")
public void managerToDashboardPage()
{
managerSteps.goesToDashboardPage();
}
@Then("they should see the login page")
public void managerShouldSeeLoginPage()
{
managerSteps.verifyOnLoginPage();
managerSteps.close();
}
}
Класс ManagerSteps расширяет net.thucydides.core.steps.ScenarioSteps, но в остальном это просто POJO. ManagerSteps вызывает объекты страницы - все очень обычные вещи и в соответствии с примерами.
В приведенном выше сценарии тест завершается неудачно, так как код отображает сообщение об ошибке, а не возвращает пользователя на страницу входа - это нормально, код безопасности не соответствует указанным требованиям (пока) Но после подтверждения внутри ManagerSteps класс терпит неудачу, тест, кажется, останавливается. Это означает, что у меня есть экземпляр браузера, который просто сидит там, пока я его не закрою При запуске в виде серии тестов это означает, что броузер в сетке Selenium теперь связан.
Мне нужен способ обнаружить сбой теста, чтобы вызвать объект страницы, чтобы закрыть / выйти.
Я не могу найти эквивалент @Before или @After, который всегда будет работать, я мог бы найти его, я мог бы использовать @After, чтобы закрыть webDriver объекта страницы.
Я не использую Thucydides для управления жизненным циклом WebDriver, так как не смог найти ни одного примера этого, который бы не использовал ThucydidesRunner.class. Должен ли я использовать ThucydidesRunner.class? Мое впечатление от руководства Thucydides для интеграции с JBehave ( http://thucydides.info/docs/thucydides/_writing_acceptance_tests_with_jbehave.html) не показало, что это было необходимо.
Как все остальные справляются с неудачами в этой ситуации?
1 ответ
Реальная проблема, с которой я столкнулся, заключалась в закрытии браузера после провала теста. Наилучшим способом управления WebDriver является использование аннотации Thucydides @ManagedDriver для управления жизненным циклом. В итоге я использовал очень простой бегун JUnit,
public class UserLogin extends ThucydidesJUnitStory
{
@Managed
public WebDriver webdriver;
@ManagedPages(defaultUrl = "http://localhost:8080/dc-bus-main-web")
public Pages pages;
}
Когда это запускается, он сопоставляется с файлом user_login.story в соответствии с соглашением об именах JBehave, а затем запускается в обычном режиме.