JUnit + Maven как запускать наборы тестов Suite

Столкнулся с проблемой запуска набора тестов.

Так прекрасно запускается

<includes>
   <include>**\WindowLogin.java</include>
   <include>**\WindowMainTest.java</include>
   <include>**\WindowSearchContactsTest.java</include>
   <include>**\WindowCallsTest.java</include>
</includes>

Но когда пытаюсь запустить Suite

<includes>
   <include>**\SuiteTest.java</include>
</includes>

Ничего не запускается

Таким образом

mvn clean compile && mvn clean test -Dtest=SuiteTest

Тоже не работает и выдаёт ошибку

D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest>mvn clean compile && mvn clean test -Dtest=SuiteTest
[INFO] Scanning for projects...
[INFO]
[INFO] ------------< TestITPhoneClient:ru.minicom.itphone.client >-------------
[INFO] Building TestITPhoneClient 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ ru.minicom.itphone.client ---
[INFO] Deleting D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ru.minicom.itphone.client ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 20 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ ru.minicom.itphone.client ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.013 s
[INFO] Finished at: 2019-07-18T12:36:22+03:00
[INFO] ------------------------------------------------------------------------
[INFO] Scanning for projects...
[INFO]
[INFO] ------------< TestITPhoneClient:ru.minicom.itphone.client >-------------
[INFO] Building TestITPhoneClient 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ ru.minicom.itphone.client ---
[INFO] Deleting D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ru.minicom.itphone.client ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 20 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ ru.minicom.itphone.client ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ru.minicom.itphone.client ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ ru.minicom.itphone.client ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 7 source files to D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ ru.minicom.itphone.client ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------

 +-------------------------------------------------------------------------------+
 | WARNING:                                                                      |
 | The junit-platform-surefire-provider has been deprecated and is scheduled to  |
 | be removed in JUnit Platform 1.4. Please use the built-in support in Maven    |
 | Surefire >= 2.22.0 instead.                                                   |
 | ? https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven |
 +-------------------------------------------------------------------------------+

[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.004 s
[INFO] Finished at: 2019-07-18T12:36:31+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project ru.minicom.itphone.client: No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

SuiteTest.java

package ru.minicom.itphone.client;

import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
@SelectClasses({WindowLogin.class, WindowMainTest.class, WindowCallsTest.class, WindowSearchContactsTest.class})
public class SuiteTest {
}

Версию maven-surefire-plugin поднимите до 22.2.1

И ещё запуск можно без compile делать. Просто mvn clean test …

Upd. :joy: у вас же 22.2.2 итак стоит.

Из IDE запускается тест-сьют? Я помню тоже столкнулся с подобной проблемой, пришлось искать рабочую комбинацию surfire плагина, платформ раннера и провайдера.

Вот тут похожую проблему обсуждали и приводили примеры рабочих pom’ников:
http://qaru.site/questions/13281694/running-test-suite-is-not-working-in-junit5-through-maven

Из ide все работает прекрасно

Ага, там надо наоборот опускать версию, а не поднимать. Так как с 2.22.0 версии плагина он уже что-то знает про 5-й JUnit и запускает не тем ранером, а для @RunWith(JUnitPlatform.class) нужен именно винтажный запускатор.

Вот пример накидал. Два класса, один винтажный, второй юпитерный, во втором два теста. А также сьют с обоими этими классами.

Запуск из консоли командой мавена: mvn clean test -Dtest=TestSuite

Аналогично всё работает в IDE:

Но в этом случае вы не сможете нормально запускать тесты 5-го JUnit’а, точнее сможете, но только в IDE или из Suite-класса.

Не думали в сторону перехода на Tag’s? Почти тоже самое получается как и при использовании Suite. Ну, и старые тесты перевести на новую платформу.

pom.xml

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <junit.jupiter.version>5.5.0</junit.jupiter.version>
        <junit.platform.version>1.5.0</junit.platform.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-runner</artifactId>
            <version>${junit.platform.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
            </plugin>
        </plugins>
    </build>