Запустите тест junit параллельно с плагином surefire maven

Можно ли настроить плагин surefire так, чтобы одни тесты выполнялись параллельно, а другие последовательно?

Также можно ли использовать surefire forkCount для запуска параллельных тестов, объявленных в jUnit Suite?


person L4zy    schedule 02.04.2014    source источник
comment
Могу я спросить, чего вы хотите достичь, потому что тест не должен зависеть от других тестов. Это означает, что не имеет значения, в какой последовательности должен выполняться тест.   -  person Bevor    schedule 02.04.2014
comment
К сожалению, в моем случае некоторые тесты требуют эксклюзивности при запуске. Но остальные, большинство, могут работать параллельно.   -  person L4zy    schedule 02.04.2014


Ответы (3)


Вы можете использовать отдельные профили maven с двумя разными конфигурациями плагинов surefire.

person Guy Bouallet    schedule 02.04.2014
comment
Итак, я могу создать 2 пакета JUnit Suite и в каждом профиле указать, какой пакет следует запускать? - person L4zy; 02.04.2014
comment
Да. У вас есть множество механизмов включения/исключения, поддерживаемых плагином surefire, для точной настройки выбора запускаемых тестов для каждого профиля. Для получения дополнительной информации проверьте это: maven.apache.org/ surefire/maven-surefire-plugin/test-mojo.html - person Guy Bouallet; 02.04.2014

Очень простой способ сделать это заключается в следующем:

  • Переместите последовательные тесты каждый в свой собственный набор тестов в junit.
  • Переместите все параллельные тесты в один набор.
  • Установите Parallel на «классы»

configuration>
					<includes>
						<include>**/A01TestSuite.java</include>
						<include>**/A02ServiceTestSuite.java</include>
						<include>**/A03FlowTestSuite.java</include>
					</includes>
					<additionalClasspathElements>
						<additionalClasspathElement>${webinf.dir}</additionalClasspathElement>
					</additionalClasspathElements>
					<systemPropertyVariables>
						<log4j.configuration>file:${l4j.test}/log4j.test.properties</log4j.configuration>
					</systemPropertyVariables>
					<forkMode>always</forkMode>
					<argLine>-Xms512m -Xmx512m</argLine>
					<parallel>classes</parallel>
					<threadCount>10</threadCount>

				</configuration>

person Jake    schedule 13.02.2016

Вы можете добавить это в конфигурацию плагина maven-surefire в файле pom.xml.

<configuration>
    <parallel>all</parallel>
    <threadCount>10</threadCount>
    <threadCountSuites>2</threadCountSuites>
    <threadCountClasses>2</threadCountClasses>
    <threadCountMethods>6</threadCountMethods>
    <parallelTestTimeoutInSeconds>3.5</parallelTestTimeoutInSeconds>
    <parallelTestTimeoutForcedInSeconds>5</parallelTestTimeoutForcedInSeconds>
    <perCoreThreadCount>true</perCoreThreadCount>
    <includes>
        <include>**/FunctionTestSuite.java</include>
    </includes>
</configuration>

Подробное объяснение можно найти по этой ссылке. Он дает полное пошаговое описание запуска тестов JUnit параллельно с surefire-maven-plugin.

Примечание. В этом фрагменте кода показаны все доступные параметры. Вы можете изменить или удалить некоторые параметры в соответствии с вашими потребностями!

person blackreaper    schedule 24.05.2020
comment
Я разработчик Surefire, поэтому могу ответить на ваши вопросы. Если вам не нравится читать нашу документацию, вы можете обратиться к более простому стилю и использовать IntelliJ IDEA. Это отличный инструмент, использующий автозаполнение. Эта функция помогает вам добавлять новые параметры конфигурации, и документация появляется, когда вы наводите указатель мыши на строки. - person tibor17; 24.05.2020
comment
<include>FunctionTestSuite.class</include> неправильно. Должно быть <include>**/FunctionTestSuite.java</include> или <include>FunctionTestSuite</include>. - person tibor17; 24.05.2020
comment
Лично я бы не стал устанавливать parallelTestTimeoutForcedInSeconds, если только это не тест производительности. Тайм-аут должен быть в 10 раз больше ожидаемого времени выполнения. - person tibor17; 24.05.2020
comment
Не ограничивайтесь только учебниками Spring. Давайте прочитаем оригинальные руководства< /а>. - person tibor17; 24.05.2020
comment
Я добавил все возможные варианты и написал в примечании, чтобы использовать их по мере необходимости. - person blackreaper; 24.05.2020