Порядок выполнения 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
169   1  

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.xml

Drkthng.selenium_experiments.packageB.Class01 дрктнг.selenium_experiments.пакетотель расположен.Class02

[TestNG] Запуск:
D:\JavaWorkspace\selenium-experiments\testng_packageC.xml

Drkthng.selenium_experiments.пакагек.Class01 дрктнг.selenium_experiments.пакагек.Class02

    Ничего не найдено.

Добавить ответ:
Отменить.