JUnit5 + Maven Параллельный запуск тестов и запуск по тегам

parallel
execution
jupiter
maven
junit
Теги: #<Tag:0x00007fedc74ce3e0> #<Tag:0x00007fedc74ce2a0> #<Tag:0x00007fedc74ce160> #<Tag:0x00007fedc74ce020> #<Tag:0x00007fedc74cdee0>

(Gordon Freeman) #1

Всем привет!

Вопроса 2, поиском не нашел.

  1. Был JUnit4 работали тесты параллельно, тут описывал как настроил pom.xml
    Selenide+Junit+Maven параллельный запуск

Перешел на JUnit5 теперь не работает параллельный запуск, нашел баг у них, что не работает с surefire plugin


и рекомендуют использоват экспериментальную фичу
https://junit.org/junit5/docs/snapshot/user-guide/#writing-tests-parallel-execution

Кто-то так пробовал ? И как у вас тесты бегают параллельно? Не понял как настроить.

Следующий вопрос не актуален
  1. Запуск по тегам, это причина по которой хотелось JUnit5 попробовать, но что-то не заработало.
    Например вот проект
    https://github.com/13Dima13/googleTest
    Так выглядит pom.xml https://github.com/13Dima13/G/blob/master/pom.xml
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven.surefire.plugin}</version>
        <configuration>
          <parallel>all</parallel>
          <perCoreThreadCount>true</perCoreThreadCount>
          <threadCount>6</threadCount>
          <perCoreThreadCount>false</perCoreThreadCount>
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <properties>
            <includeTags>${tag}</includeTags>
          </properties>
        </configuration>
      </plugin>
    </plugins>
  </build>

И вот пример теста https://github.com/13Dima13/G/blob/master/src/test/java/com/example/project/TestThreads.java

    @Test
    @Tag("smoke")
    public void test1() {
        open("https://mvnrepository.com/artifact/log4j/log4j/1.2.17");
        $("#maincontent > table > tbody > tr:nth-child(1) > th").waitUntil(Condition.appears, 120000);
        $("#maincontent > table > tbody > tr:nth-child(1) > th").shouldBe(Condition.text("License"));
        assertEquals("Maven Repository: log4j » log4j » 1.2.17", title());
        out.println("test1 Passed");
    }

Запускаю из консоли в IDEA

mvn -Dtag=smoke test

Запускаются все тесты из класса public class TTT, а не тот один, что помечен тегом.


(Gordon Freeman) #2

Ответ на вопрос 2

Запуск по тегам
Получен, надо в pom.xml добавить еще пару зависимостей, шарю кому интересно

	<build>
		<plugins>
			<!-- JUnit 5 requires Surefire version 2.22.0 or higher -->
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.22.0</version>
                <configuration>
                    <properties>
                        <includeTags>${tag}</includeTags>
                    </properties>
                </configuration>
				<dependencies>
					<dependency>
						<groupId>org.junit.platform</groupId>
						<artifactId>junit-platform-surefire-provider</artifactId>
						<version>1.2.0</version>
					</dependency>
					<dependency>
						<groupId>org.junit.jupiter</groupId>
						<artifactId>junit-jupiter-engine</artifactId>
						<version>${junit.jupiter.version}</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>