TestNG использует Приоритет, чтобы «предложить» порядок выполнения, основываясь на приоритете, который вы даете тесту. Это не то же самое, что установка заказа.
Строгий способ установить заказ по определенным тестам - использовать Зависимости теста . Если TestA имеет приоритет = 1, а TestB имеет приоритет = 2, но A зависит от B, тогда TestNG будет запускаться B сначала, игнорируя приоритет, иначе A потерпит неудачу.
Сочетание двух методов даствы чем-то похожи на «порядок выполнения».
Я бы исправил то, что говорит Джефф. Он прав, говоря, что это хорошая практика, чтобы ваши тесты были максимально независимыми друг от друга. Но это всегда верно ТОЛЬКО в модульном тестировании.
Например: у вас может быть набор регрессии, например:
@Test (priority=2)
public void validateAddingMilkToShoppingCart(){
putMilkInCart();
validateMilkIsInCart();
}
@Test (priority=1, dependsOnMethods = {"validateAddingMilkToShoppingCart"})
public void validateRemovingMilkToShoppingCart(){
verifyMilkIsInCart();
removeMilkFromCart();
validateCartIsEmpty();
}
В этом сценарии «validateRemovingMilkToShoppingCart» можетимеют более высокий приоритет, потому что Sprint работает над опустошением корзины покупок, или потому что недавно была обнаружена ошибка. Но вам следует только запустить этот тест, если вы можете поместить молоко в корзину в первую очередь, в противном случае вы потратите время и ресурсы на запуск теста, который, как вы уже знаете, провалится на основании предыдущего теста. Кроме того, сделав это, вы получите отчет, который будет выглядеть чище, если вы не смогли протестировать эту функцию из-за ошибки в предыдущем тесте.
Надеюсь, что это ответ на ваш вопрос.