Я понимаю, почему вы запутались.
Нет смысла использовать parallel="tests"
в тестовом теге. Параллельный = «тесты» диктует, что все определенные в XML выполняются в разных потоках. Но вы назначаете его уровню теста, поэтому он будет применять только этот параметр для этого теста.
У вас есть два варианта здесь.
Чтобы установить параметр многопоточности на уровне набора, с помощьюраспараллеливание «тестов»: <suite name = "ParallelTesting" parallel="tests" thread-count="2">
Или, чтобы поставить его на уровень тестирования, с опцией «method»: <test name = "Test Parallelism" parallel="method" thread-count="2">
Итак:
- «тесты»: для каждого в файле XML.
- «метод»: для каждого метода @Test в том месте, где вы поместили свойство (все @Tests внабор, все @Tests в классе и т. д.)
Что касается второго вопроса, нет, он будет запускать @BeforeClass только один раз. Вы можете легко проверить его:
XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "ParallelTesting" parallel="tests" thread-count="2">
<test name = "Test Parallelism 1" >
<classes>
<class name = "com.openjaw.testregression.tretailapi.test.car.TestClass"/>
</classes>
</test>
<test name = "Test Parallelism 2" >
<classes>
<class name = "com.openjaw.testregression.tretailapi.test.car.TestClass2"/>
</classes>
</test>
</suite>
Тестовый класс 1:
public class TestClass {
@BeforeClass
public void beforeClass() {
System.out.println("Class 1 - Before Class with Thread Id:- "+ Thread.currentThread().getId());
}
@Test
public void testA() {
System.out.println("Class 1 - Test Case A with Thread Id:- " + Thread.currentThread().getId());
}
@Test
public void testB() {
System.out.println("Class 1 - Test Case B with Thread Id:- " + Thread.currentThread().getId());
}
}
Класс испытаний 2:
public class TestClass2 {
@BeforeClass
public void beforeClass() {
System.out.println("Class 2 - Before Class with Thread Id:- "+ Thread.currentThread().getId());
}
@Test
public void testA() {
System.out.println("Class 2 - Test Case A with Thread Id:- " + Thread.currentThread().getId());
}
@Test
public void testB() {
System.out.println("Class 2 - Test Case B with Thread Id:- " + Thread.currentThread().getId());
}
}
Выход:
Class 1 - Before Class with Thread Id:- 12
Class 2 - Before Class with Thread Id:- 13
Class 2 - Test Case A with Thread Id:- 13
Class 1 - Test Case A with Thread Id:- 12
Class 2 - Test Case B with Thread Id:- 13
Class 1 - Test Case B with Thread Id:- 12
===============================================
ParallelTesting
Total tests run: 4, Failures: 0, Skips: 0
===============================================