После обновления до версии 6.14.2 изменена последовательность запуска тестового примера Testng.

Ранее я использовал версию testng 6.8.8, и все тесты выполнялись, как и ожидалось. Но несколько дней назад я обновил тестовую версию до 6.14.2, начал сталкиваться с проблемой запущенных последовательностей. Я также пытался изменить приоритет и все такое, но он не работает, как работал в testng 6.8.8. Обратитесь к исходному коду для более подробной информации.

класс1.java

    package TestNG;

    import org.testng.annotations.AfterClass;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;
    public class class1
    {
    @BeforeClass
    public void beforeclass1()
    {
        System.out.println("before_class1");

    }

    @AfterClass
    public void afterclass1()
    {
        System.out.println("after_class1");

    }

    @Test(priority = 0)
    public void class1_method1()
    {
        System.out.println("class1_method1");
    }

    @Test(priority = 1)
    public void class1_method2()
    {
        System.out.println("class1_method2");

    }

    @Test(priority = 2)
    public void class1_method3()
    {
        System.out.println("class1_method3");

    }
}

класс2.java

package TestNG;

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class class2
{

    @BeforeClass
    public void beforeclass1()
    {
        System.out.println("before_class2");

    }

    @AfterClass
    public void afterclass1()
    {
        System.out.println("after_class2");

    }

    @Test(priority = 0)
    public void class2_method1()
    {
        System.out.println("class2_method1");
    }

    @Test(priority = 1)
    public void class2_method2()
    {
        System.out.println("class2_method2");

    }

    @Test(priority = 2)
    public void class2_method3()
    {
        System.out.println("class2_method3");

    }
}

класс3.java

package TestNG;

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class class3
{

    @BeforeClass
    public void beforeclass1()
    {
        System.out.println("before_class3");

    }

    @AfterClass
    public void afterclass1()
    {
        System.out.println("after_class3");

    }

    @Test(priority = 0)
    public void class3_method1()
    {
        System.out.println("class3_method1");
    }

    @Test(priority = 1)
    public void class3_method2()
    {
        System.out.println("class3_method2");

    }

    @Test(priority = 2)
    public void class3_method3()
    {
        System.out.println("class3_method3");

    }
}

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test name="Test" >
    <classes>
      <class name="TestNG.class1">
        <methods>
          <include name="class1_method1"/>
          <include name="class1_method2"/>
          <include name="class1_method3"/>
          <include name="beforeclass1"></include>
          <include name="after_class1"></include>
          </methods>
      </class>
      <class name="TestNG.class2">
       <methods>
          <include name="class2_method1"/>
          <include name="class2_method2"/>
          <include name="class2_method3"/>
          <include name="beforeclass2"></include>
          <include name="after_class2"></include>         
          </methods>
      </class>
      <class name="TestNG.class3">
          <methods>
          <include name="class3_method1"/>
          <include name="class3_method2"/>
          <include name="class3_method3"/>
          <include name="beforeclass3"></include>
          <include name="after_class3"></include>
          </methods>
       </class>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

Фактический вывод после запуска testng.xml с использованием testng(6.14.2):

до_класса1

class1_method1

до_класса2

class2_method1

до_класса3

class3_method1

класс1_метод2

класс2_метод2

class3_method2

класс1_метод3

after_class1

class2_method3

after_class2

class3_method3

after_class3

Ожидаемый результат: (отлично работает с testng 6.8.8, но не работает с testng 6.14.2)

до_класса1

class1_method1

класс1_метод2

класс1_метод3

after_class1

до_класса2

class2_method1

класс2_метод2

class2_method3

after_class2

до_класса3

class3_method1

class3_method2

class3_method3

after_class3


person Denish Makwana    schedule 01.04.2018    source источник
comment
добавьте ‹test name=Test save-order=true› в файл testng.xml. Какой набор save-order=true.   -  person Abhishek Dhoundiyal    schedule 02.04.2018


Ответы (1)


Эта настройка будет работать до версии 6.9.10, после чего приоритет станет глобальным для тестового тега.

Используйте dependsOnMethods or depednsOnGroups для запуска по порядку внутри класса. Вам нужно будет использовать alwaysRun = true, если вы хотите запустить метод, если метод, от которого он зависит, не работает.

Также вы можете попробовать просто разделить классы на разные тестовые теги.

Также не уверен, есть ли необходимость упоминать методы до и после в теге методов.

person Grasshopper    schedule 02.04.2018
comment
Я был бы очень признателен, если бы вы объяснили это одним примером или объяснили файлами, которыми я поделился по этому вопросу. - person Denish Makwana; 03.04.2018
comment
Обратитесь к этому. Это довольно легко сделать -- testng.org/doc/documentation-main.html #зависимые-методы - person Grasshopper; 03.04.2018