Проблема (Вопрос) заключается:
Столкнулся с необходимостью успешного завершения теста при выполнении условия, так чтобы все последующие методы не выполнялись и происходил переход к следующему тесту.
Это реально сделать на Java?
Проблема (Вопрос) заключается:
Столкнулся с необходимостью успешного завершения теста при выполнении условия, так чтобы все последующие методы не выполнялись и происходил переход к следующему тесту.
Это реально сделать на Java?
Самый простой способ, завернуть все остальные методы в else.
или же просто выйти из метода по условию
if(true) {
return;
}
Если у вас возникла такая необходимость, то скорее всего вы что-то делаете не так.
Опишите ваш сценарий. Велика вероятность того, что сам тест “на всякий случай” по пути проверяет то, что не должен проверять. А следовательно, нуждается в декомпозиции. В тестах не должно быть логики в стиле:
do X
if condition
break
else
do Y
Проще и надежней написать 2 теста, которые проверяют X и Y.
Спасибо. Частично помогло. Подскажите, return; завершает текущий метод и переходит к следующему методу или завершает текущий тест?
return в методе завершает работу метода.
Соответственно если хотите, чтобы один return выходил из теста - оберните как писали выше все вызовы в другой метод или фанк
Типа такого:
TestRunner.Run ( () =>
{
//do stuff…
If (OHMYGOD) return;
});
Но это плохая практика. Даю гарантию, что какие-то ошибки в таких случаях будут пропускаться тестами, а тесты будут пасситься.
Лучше как, опять же, писали выше - разнести логику проверок на разные тесты.
Много повторяющихся подобных кусков
if (enterButton.isEnabled() & first.length() < 10 & second.length() >= 8 & autorizationerrorlogin.getText().equals(“Необходимо заполнить «Телефон».”)) {
System.out.println("Количество символов в логине = " + first.length());
System.out.println("Количество символов в пароле = " + second.length());
System.out.println("Вводимый логин: " + first + ", пароль: " + second);
System.out.println(“Проверочная фраза: " + autorizationerrorlogin.getText() + " = Необходимо заполнить «Телефон».”);
Assert.assertEquals(“неверная проверочная фраза”,“Необходимо заполнить «Телефон».”, autorizationerrorlogin.getText());
System.out.println(“Проверка на отсуствие пароля пройдена”);
return;
}
Я могу ошибаться, но по-моему в Java Assert работает так же, как в C# - если переданный в Assert метод вернул не ожидаемый результат, то у вас выкинется исключение.
Так что в текущей реализации если у вас будет ошибка, то код никогда не дойдёт до строчки
System.out.println(“Проверка на отсуствие пароля пройдена”);
А если ошибки не будет - то эта строчка не имеет смысла, т.к. проверка пройдена.
Если вы хотите делать много проверок в тесте, вам нужен класс а-ля Verify, который будет выполнять ассерты - ловить их эксепшены, аллертить в репорт скриншотом (по желанию) и сообщением, что проверка не пройдена - и идти дальше.
Многие относятся к такому подходу скептически, но я считаю что есть те проверки, которые можно выполнить в рамках одного запуска, если вы проверяете end-to-end, и фэйл которых не мешает дальнейшему выполнению кода.
Строчка нужна для красоты.
Ничего в этом красивого нет, это хлам в логе.
Зачем вам куча ненужной информации в логе?
Я могу понять, когда подобные строчки оформляются как шаг в репорте (например в аллюре), если не используется specflow, для читабельности репорта как story.
Мне так удобнее отлаживать тест.
Всем спасибо. Задача решена.
лучше всего использовать testng там для этого существует метод dependsOnMethods = {“зависимый тест”}