2016-10-21 2 views
1

У меня есть 2 класса.Проблема TestNG при параллельном выполнении и с «приоритетом»

Класс 1:

@Test 
public void test1(){ 
    System.out.println("test1-1"); 
} 

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

@Test(priority = 6) 
public void test3(){ 
    System.out.println("test3-1"); 
} 

@Test(priority = 9) 
public void test4(){ 
    System.out.println("test4-1"); 
} 


Класс 2:

@Test 
public void test1(){ 
    System.out.println("test1-2"); 
} 

@Test(priority = 1) 
public void test2(){ 
    System.out.println("test2-2"); 
} 

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

@Test(priority = 3) 
public void test4(){ 
    System.out.println("test4-2"); 
} 


XML:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="Smoke" verbose="1" parallel="tests" thread-count="5" > 
    <test name="GalaxyS7"> 
     <classes> 
      <class name="TempTest.ClassTest1"/> 
      <class name="TempTest.ClassTest2"/> 
     </classes> 
    </test> 
</suite> 

И когда я выполнить тест ожидать выход ред является:

test1-1
test2-1
test3-1
test4-1
test1-2
test2-2
test3-2
test4-2

Но фактический объем производства:

test1-1
test1-2
test2-1
test2-2
test3-2
test4-2
test3-1
test4-1

Но когда я удаление parallel="tests", выполнение как и ожидалось. Когда я удаляю приоритеты, но parallel="tests" остается в XML-исполнении, как ожидалось. Но я пытаюсь параллельно запускать свои тесты и иметь там приоритеты.

Это ошибка в TestNG или мне что-то не хватает?

Любая помощь приветствуется. Моя цель - запустить все тестовые примеры из первого класса, а затем из второго класса.

ответ

0

Как я могу сказать, вы ожидаете, что каждый экземпляр объекта имеет собственный набор priorities при работе в параллельном режиме, в то время как ваш тестовый пакет рассматривает приоритеты как глобальные переменные, также когда приоритеты равны, он обрабатывает затем в верхнем нисходящем веществе (TempTest.ClassTest1, затем TempTest.ClassTest2).

tl; dr:
priority используется в глобальном масштабе, а не на экземпляре.

+0

Из моего опыта «приоритеты» должны работать для каждого тестового случая. И они работали раньше, а не в параллельном режиме. Я нашел, как разрешить его с помощью 'group-by-instance =" true "'. Но все же, когда я добавляю 'preserve-order =" true ", он ничего не делает –

+0

Итак, посмотрев на [documentation] (http://testng.org/doc/documentation-main.html # parallel-running), кажется, что существуют разные параллельные режимы, в режиме 'тесты' он будет запускать все классы в одном блоке' 'в том же потоке, если вы хотите запускать каждый из этих классов или объектов в есть собственный поток одновременно, вы можете использовать либо 'parallel =" классы "или' parallel = "экземпляры". –

Смежные вопросы