Arquillian Graphene waitModel TimeoutException позволяет завершить тест с ошибкой, а не сбоем

Я думаю, что моя проблема не имеет ничего общего с кодом, но с ожиданием UI-Elements в тестах в целом или, по крайней мере, с моим пониманием тестирования UI с JUnit и Selenium/Arquillian Graphene.

При использовании Arquillian Graphenes waitModel() (или любого другого метода, ожидающего UI-Elements), и элемент не присутствует после указанного тайм-аута, я получаю исключение seleniumTimeoutException, которое позволяет моему JUnit-Test завершиться с ошибкой.

ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 151.709 s <<< FAILURE! - in de.viasurance.UiTest
[ERROR] testHappyPath(org.test1.UiTest)  Time elapsed: 23.266 s  <<< ERROR!
org.openqa.selenium.TimeoutException: 

Есть ли лучший способ позволить тесту завершиться с "Отказом", не окружая каждую строку моего теста блоком try/catch следующим образом:

try {
waitModel().withMessage("waiting for loginButton").until().element(loginButton).is().clickable();
} catch (TimeoutException timeoutException) {
fail("UI-Test failed because the following UI-element could not be found: \n" + timeoutException.getMessage());
}

1 ответ

Вы не должны окружать это блоком try/catch и терпеть неудачу в блоке catch

Об этом должен позаботиться сам ваш тестовый фреймворк. TestNG делает хорошую работу здесь.

Graphene.waitModel()
        .withMessage("Login Button Not clickable")
        .until()
        .element(loginButton)
        .is()
        .clickable();

Для Junit, вы можете использовать TestWatcher для обнаружения ошибки и сбоя соответственно.

Другие вопросы по тегам