Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как сделать так, чтобы весь тестьют стопился если хоть один тест сфейлился

java
testng
Теги: #<Tag:0x00007f7b654e6168> #<Tag:0x00007f7b654e6028>

#1

Здравствуйте. Подскажите плиз.
Вот есть тестовый класс с тестовыми методами.
Запускаю его и если какой-либо тест фейлится, то запускается следующий. Но мне в одном конкретном случае, где каждый тест состоит из последовательной цепочки этих тестов, надо чтобы весь тест (тестовый класс) стопился, так как нет смысла вызывывать последующие тестовые методы.


(James May) #2

Воспользуйтесь зависимостями
http://testng.org/doc/documentation-main.html#dependent-methods


#3

то есть каждому последующему методу указывать в зависимостях предыдущий?


(James May) #4

Вообще, это нехорошая практика. Но если примерло, то можно проставить зависимости метода от метода, либо создать группу от которой будет зависеть тест и т.д.
В идеале, конечно же, чтобы зависимостей не было вовсе.


#5

да, в идеале лучше чтобы не было, но у меня длинный тестовый сценарий, последовательный.


(Gleb Stsenov) #6

Во-первых, некоторые тестовые фреймворки дают возможность указать порядок выполнения тестовых методов, или зависимости, кау указали выше. Во-вторых, это есть зло, если от этого зависит результат методов. То есть, есть смысл использовать для оптимизации ресурсов, но не более. Тесты должны быть автономными и независимыми.
Если у вас тестовый сценарий один, но длинный, имхо, вопрос исключительно в организации кода. Пусть это будет один тестовый метод, который имеет в себе тучу проверок, но хорошо структурирован. То есть, как правило, разбит на методы. Типа

  1. public void testAllStuff() {
    
  2.       testFirstPage();
    
  3.       fillFirstPageData();
    
  4.       testSecondPage();
    
  5.       ...... 
    
  6. }
    

где вызываемые методы не должны восприниматься ланучером тестов, как отдельные тестовые методы (если это вам подходит и вы не хотите вызывать их по отдельности).
Это в общем. А дальше уже возникает естественная мысль - возможно, вы неправильно подходите к структурированию своих тестов, или не осознаете все возможности тестового фреймворка. Тут уже надо детали знать :smile: