Задать конкрентное число потоков для тестов (Cucumber + TestNG)

Привет. Пытаюсь распараллелить тесты на Cucumber + TestNG. Я так понимаю, когда мы не указываем число потоков, то там по умолчанию стоит некое большое число. Мне надо иметь возможность самому указать количество потоков. Пробую так:

(1) Создал файл src/test/resources/testng.xml с содержимым:

(2) В pom файле, в maven-surefire-plugin добавил раздел configuration, где указал путь до testng.xml

На всякий случай инфа:

(3) Зависимости такие:

(4) Класс-запускатор выглядит так:

(5) Структура проекта:

изображение

В итоге когда запускаю тесты, то все мои 4 сценария запускаются по-прежнему каждый в своём потоке (всего 4 потока):

изображение

хотя я в файле testng.xml указал thread-count=“2” (количество потоков = 2).

Подскажите, как сделать?

Так в документации ж написано как раз про ваш случай:
https://cucumber.io/docs/guides/parallel-execution/
У вас даже пример как оттуда взятый. Странно, что вы вот это не увидели:

The default thread count of the dataprovider in parallel mode is 10 . To change this the dataproviderthreadcount property needs to be added to the configuration section of the Surefire or Failsafe plugin in the POM .

<configuration>
    <properties>
        <property>
            <name>dataproviderthreadcount</name>
            <value>20</value>
        </property>
    </properties>
</configuration>

If you have multiple runners , set the parallel configuration to classes to reduce execution times. In addition the threadCount can be set to to the desired value or useUnlimitedThreads can be set to true.

<configuration>
    <parallel>classes</parallel>
    <threadCount>4</threadCount>
</configuration>
1 лайк

да, я пример брал из документации.
Но оба этих способа задать конкретное число потоков у меня почему-то не заработали. И поэтому я начал гуглить и искать другие способы…

Из вопроса это было неочевидно. Во-первых тут же сказано какое число потоков создаётся по-умолчанию - 10, а во-вторых вы про попытки использования этого параметра ничего не сказали.

Есть мнение, что версию maven-surefire-plugin нужно поменять на 2.22.1

А параметр этот у себя как задавали, так?

         <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <properties>
                        <property>
                            <name>dataproviderthreadcount</name>
                            <value>2</value>
                        </property>
                    </properties>
                </configuration>
            </plugin>
        </plugins>

Пример кода GitHub - sirdir/pom_parallel_testng

1 лайк

да, так и делал.

Сейчас посмотрел твою ссылку:

Пример кода GitHub - sirdir/pom_parallel_testng

и до меня дошла ошибка: я запускал в студии класс RunCucumberTest. Сейчас ввел команду в консоли
mvn test
и заработало в 2 потока.
Спасибо, теперь ок.

1 лайк