Каждый класс Test* содержит в себе множество методов. При запуске всего проекта методы идут рандомно.
Мне хотелось бы, чтобы вначале прошли методы одного класса, а потом только запускались методы другого. Это возможно?
Смотря зачем это нужно.
Если есть зависимости между тестами - нужно проставить dependsOnMethods.
Если просто надо определенный порядок выполнения методов - priority.
Если надо что бы классы ранались в том порядке, что и в xml - разбивайте их в разные тесты.
Сначала убедитесь, что это действительно нужно. По-хорошему, тесты должны быть независимы друг от друга.
По умолчанию TestNG так и делает: тесты идут последовательно, как указано в конфиге. Методы внутри теста запускаются в алфавитном (вроде) порядке, считай не упорядочены. В документации TestNG, сказано то же самое.
By default, TestNG will run your tests in the order they are found in the XML file.
TestNG предлагает несколько способов упорядоченного запуска: от зависимостей, до упорядочения по группам.
Если никакой способ не подойдет, можно реализовать свой механизм запуска, через Listener-ы, и в нём определять порядок как вам захочется
А разве dependsOnMethods и priority можно применять к классам? Подскажите, как?
Про выставление зависимостей я понимаю, что чем меньше, тем лучше. В крайнем случае использовать alwaysRun. Но это все к отдельным методам. PS: тесты пишу на Java.
Спасибо! По сути получается, что priority и настройка в xml идентична? Ну то есть и так и так классы будут выполняться по порядку. Или реализация таких порядков сильно отличается и в этом есть какие-то значимые нюансы?
В этом случае, перед выполнением теста test, TestNG соберет все тестовые методы в указанных классах, построит порядок выполнения, если есть приоритеты и зависимости. Если их нет - методы пойдут в алфавитном порядке, что в принципе и логично: представьте если у сьюта поставить parallel=“methods”.
Хочу заметить, что такая конструкция применительно к классу у меня не работает!
Классы все равно запускаются не в порядке выставленного значения priority. Применительно к методам priority работает. Что странно, ведь в доке написано, что “Mark a class or a method as part of the test”. Кто-нибудь пробовал?
Так действительно работает А в моем проекте не работает. Значит дело в чем-то еще… Какой-то еще параметр может влиять на работу testNG? Файлы testng.xml абсолютно идентичны, меняются только пути до классов.
Абсолютно аналогичная ситуация, и тоже без решения. Приходиться делать рефакторинг и переписывать тесты так что бы они были независимы. Это можно сделать но если придерживаться правил ООП займёт время.
Но сама ситуация когда у одного код работает как этого хотелось а у другого нет не даёт спокойно жить. Вопрос почему не работает ордеринг согласно xml остаётся