Не получается распараллелить jUnit5 тесты с помощью maven-surefire-plugin

maven-surefire-plugin
java
maven
junit
Теги: #<Tag:0x00007fedb9a4f020> #<Tag:0x00007fedb9a4ee68> #<Tag:0x00007fedb9a4ed00> #<Tag:0x00007fedb9a4ebc0>

(Anton Yeryomin) #1

Решил перейти на jUnit5 и столкнулся с проблемой, что maven-surefire-plugin не параллелит тесты
Вот пример pom файла:

<properties>
	<compiler.version>1.8</compiler.version>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>


	<aspectj.version>1.8.10</aspectj.version>
	<htmlelements.version>2.0-RC13</htmlelements.version>
	<selenium.version>3.9.1</selenium.version>
	<junit.version>4.12</junit.version>
	<allure.junit.version>2.6.0</allure.junit.version>
	<commons.io.version>2.6</commons.io.version>
	<qatools.properties.version>2.0.RC6</qatools.properties.version>
	<shutterbug.version>0.7</shutterbug.version>
	<guava.version>22.0</guava.version>
	<allure.maven.version>2.9</allure.maven.version>
	<maven.compiler.version>3.7.0</maven.compiler.version>
	<maven.surefire.version>2.19.1</maven.surefire.version>
	<jupiter.version>5.1.0</jupiter.version>
	<junit.platform.provider.version>1.1.0-RC1</junit.platform.provider.version>
</properties>

<dependencies>
	<dependency>
		<groupId>io.qameta.allure</groupId>
		<artifactId>allure-junit5</artifactId>
		<version>${allure.junit.version}</version>
	</dependency>
	<dependency>
		<groupId>org.junit.jupiter</groupId>
		<artifactId>junit-jupiter-params</artifactId>
		<version>${jupiter.version}</version>
	</dependency>
	<dependency>
		<groupId>org.junit.jupiter</groupId>
		<artifactId>junit-jupiter-engine</artifactId>
		<version>${jupiter.version}</version>
	</dependency>
	<dependency>
		<groupId>org.junit.jupiter</groupId>
		<artifactId>junit-jupiter-api</artifactId>
		<version>${jupiter.version}</version>
	</dependency>
	<dependency>
		<groupId>io.qameta.htmlelements</groupId>
		<artifactId>htmlelements</artifactId>
		<version>${htmlelements.version}</version>
	</dependency>
	<dependency>
		<groupId>org.seleniumhq.selenium</groupId>
		<artifactId>selenium-java</artifactId>
		<version>${selenium.version}</version>
	</dependency>
	<dependency>
		<groupId>commons-io</groupId>
		<artifactId>commons-io</artifactId>
		<version>${commons.io.version}</version>
	</dependency>
	<dependency>
		<groupId>ru.qatools.commons</groupId>
		<artifactId>properties</artifactId>
		<version>${qatools.properties.version}</version>
	</dependency>
	<dependency>
		<groupId>com.assertthat</groupId>
		<artifactId>selenium-shutterbug</artifactId>
		<version>${shutterbug.version}</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-simple</artifactId>
		<version>1.8.0-beta1</version>
	</dependency>
</dependencies>

<build>
	<plugins>
		<plugin>
			<groupId>io.qameta.allure</groupId>
			<artifactId>allure-maven</artifactId>
			<version>${allure.maven.version}</version>
			<configuration>
				<reportVersion>2.4.1</reportVersion>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>${maven.compiler.version}</version>
			<configuration>
				<encoding>UTF-8</encoding>
				<source>${compiler.version}</source>
				<target>${compiler.version}</target>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-surefire-plugin</artifactId>
			<version>${maven.surefire.version}</version>
			<configuration>
				<testFailureIgnore>false</testFailureIgnore>
				<parallel>all</parallel>
				<threadCount>10</threadCount>
				<perCoreThreadCount>false</perCoreThreadCount>
				<systemProperties>
					<property>
						<name>allure.results.directory</name>
						<value>${project.build.directory}/allure-results</value>
					</property>
				</systemProperties>
				<argLine>
					-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
				</argLine>
			</configuration>
			<dependencies>
				<dependency>
					<groupId>org.junit.platform</groupId>
					<artifactId>junit-platform-surefire-provider</artifactId>
					<version>${junit.platform.provider.version}</version>
				</dependency>
				<dependency>
					<groupId>org.junit.jupiter</groupId>
					<artifactId>junit-jupiter-engine</artifactId>
					<version>${jupiter.version}</version>
				</dependency>
			</dependencies>
		</plugin>
	</plugins>
</build>

если кто сталкивался с проблемой и может помочь, напишите плиз.


#2

У меня вот так работает.

      <parallel>methods</parallel>
                    <forkCount>${threads}</forkCount>
                    <threadCount>${threads}</threadCount>

(Anton Yeryomin) #3

работает именно в jUnit 5 ?? потому что у меня с 4.12 проблем не было… попробовал с форками, тоже не работает…


#4

это у меня testNg но на сколько я знаю мавен плагину вообще пофиг кто тест ранер.
Вот документашка http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html


(Gordon Freeman) #5

С февраля дело продвинулось? Потому что тоже столкнулся с этим.


(Anton Yeryomin) #6

Привет. Нет, отказался от Junit5 пока, заюзал TestNG


(Gordon Freeman) #7

Я уже тоже об этом подумываю… :grinning:
А как в TestNG решается вопрос параллельного запуска и например есть ли запуск тестов помеченных каким-то тегом из коробки, чтобы не описывать свой ранер?
Спасибо за ответ!