Порядок выполнения TestNG XML
У меня есть проект testng java, как показано ниже (в точном порядке)
TestNGOnePack
ClassOne.java
ClassTwo.java
TestNGThreePack
ClassOne.java
ClassTwo.java
TestNGTwoPack
ClassOne.java
ClassTwo.java
Каждый файл java выглядит следующим образом
@Test
public void pkgName()
{
System.out.println(this.getClass().getCanonicalName());
}
Testng.xml выглядит следующим образом
<suite name="Suite One">
<test name="Test One" >
<classes>
<class name="TestNGTwoPack.ClassTwo" />
<class name="TestNGOnePack.ClassOne" />
</classes>
<packages>
<package name="TestNGThreePack" />
</packages>
</test>
Когда я запустил это как testng, я получил следующий вывод
TestNGTwoPack.ClassTwo
TestNGThreePack.ClassOne
TestNGOnePack.ClassOne
TestNGThreePack.ClassTwo
Мой вопрос в том, что последовательность вывода неоднозначна
Разве это не должно быть следующим? что здесь не так ??? в чем причина того, что выход такой же, как выше, а не как ниже ??
TestNGTwoPack.ClassTwo
TestNGOnePack.ClassOne
TestNGThreePack.ClassOne
TestNGThreePack.ClassTwo
1 ответ:
Нет, К сожалению, то, что вы видите, - это реализованное в настоящее время поведение в testNG.
смотрите это обсуждение, чтобы оставаться в курсе событий.
Решение
Существует несколько способов обойти эту проблему, включая группы и зависимые группы и т. д. об этом вы можете прочитать в обсуждении выше.
Но в вашем случае я думаю, что я бы пошел на несколько сюит-файлов и один "мастер-люкс" , который запускает эти сюиты, тогда вы можно быть уверенным, что есть правильный порядок исполнения.Ваш testng_packageAandB.xml:
<?xml version="1.0" encoding="UTF-8"?> <suite name="Suite - package A and B"> <test name="Test - package A and B"> <classes preserve-order="true"> <class name="drkthng.selenium_experiments.packageB.Class01" /> <class name="drkthng.selenium_experiments.packageA.Class02" /> </classes> </test> </suite>Ваш testng_packageC.xml:
<?xml version="1.0" encoding="UTF-8"?> <suite name="Suite - package C"> <test name="Test - package C"> <packages preserve-order="true"> <package name="drkthng.selenium_experiments.packageC" /> </packages> </test> </suite>И ваш" run all " xml:
<?xml version="1.0" encoding="UTF-8"?> <suite name="allSuites"> <suite-files> <suite-file path="testng_packageAandB.xml" /> <suite-file path="testng_packageC.xml" /> </suite-files> </suite>Запуск только последнего xml даст вам выполнение, которое вы ожидаете, в моем случае это:
[TestNG] Запуск:
D:\JavaWorkspace\selenium-experiments\testng_packageAandB.xmlDrkthng.selenium_experiments.packageB.Class01 дрктнг.selenium_experiments.пакетотель расположен.Class02
[TestNG] Запуск:
D:\JavaWorkspace\selenium-experiments\testng_packageC.xmlDrkthng.selenium_experiments.пакагек.Class01 дрктнг.selenium_experiments.пакагек.Class02
Comments