This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git


The following commit(s) were added to refs/heads/master by this push:
     new 4eec1d9  [SUREFIRE-1787] Support multiple runners (JUnit4, TestNG, 
other) and their API in JUnit5 Provider
4eec1d9 is described below

commit 4eec1d93a10304d9661b26f272a5bb147199bca1
Author: tibordigana <[email protected]>
AuthorDate: Sat May 2 13:08:16 2020 +0200

    [SUREFIRE-1787] Support multiple runners (JUnit4, TestNG, other) and their 
API in JUnit5 Provider
---
 .../plugin/surefire/AbstractSurefireMojo.java      | 106 +++++++--------
 surefire-its/src/test/resources/junit-4-5/pom.xml  | 146 +++++++++++++++++++++
 .../junit-4-5/src/test/java/pkg/JUnit4Test.java    |  10 ++
 .../junit-4-5/src/test/java/pkg/JUnit5Test.java    |  10 ++
 .../src/test/resources/junit5-runner/pom.xml       |  53 ++++++++
 .../src/test/java/examples/RootTest.java           |  10 ++
 .../src/test/java/examples/a/ATest.java            |  10 ++
 .../src/test/java/examples/b/BTest.java            |  10 ++
 .../src/test/java/pkg/JUnit5Tests.java             |  15 +++
 .../src/test/resources/junit5-testng/pom.xml       |  74 +++++++++++
 .../src/test/java/pkg/JUnit5Test.java              |  10 ++
 .../src/test/java/pkg/TestNGTest.java              |  10 ++
 12 files changed, 407 insertions(+), 57 deletions(-)

diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index 6fd5df4..055eff0 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -1173,8 +1173,8 @@ public abstract class AbstractSurefireMojo
     {
         Artifact junitDepArtifact = getJunitDepArtifact();
         return new ProviderList( new DynamicProviderInfo( null ),
+                              new JUnitPlatformProviderInfo( 
getJUnit5Artifact(), testClasspath ),
                               new TestNgProviderInfo( getTestNgArtifact() ),
-                              new JUnitPlatformProviderInfo( 
getJunitPlatformArtifact(), testClasspath ),
                               new JUnitCoreProviderInfo( getJunitArtifact(), 
junitDepArtifact ),
                               new JUnit4ProviderInfo( getJunitArtifact(), 
junitDepArtifact ),
                               new JUnit3ProviderInfo() )
@@ -2308,21 +2308,17 @@ public abstract class AbstractSurefireMojo
         return getProjectArtifactMap().get( "junit:junit-dep" );
     }
 
-    private Artifact getJunitPlatformArtifact()
+    private Artifact getJUnit5Artifact()
     {
-        Artifact artifact = getProjectArtifactMap().get( 
"org.junit.platform:junit-platform-commons" );
-        if ( artifact == null )
+        if ( getProjectArtifactMap().get( 
"org.junit.platform:junit-platform-runner" ) != null )
         {
-            artifact = getPluginArtifactMap().get( 
"org.junit.platform:junit-platform-engine" );
+            return null;
         }
 
-        Artifact projectArtifact = project.getArtifact();
-        String projectGroupId = projectArtifact.getGroupId();
-        if ( artifact == null && ( "org.junit.platform".equals( projectGroupId 
)
-                || "org.junit.jupiter".equals( projectGroupId )
-                || "org.junit.vintage".equals( projectGroupId ) ) )
+        Artifact artifact = getPluginArtifactMap().get( 
"org.junit.platform:junit-platform-engine" );
+        if ( artifact == null )
         {
-            artifact = projectArtifact;
+            artifact = getProjectArtifactMap().get( 
"org.junit.platform:junit-platform-commons" );
         }
 
         return artifact;
@@ -2890,7 +2886,7 @@ public abstract class AbstractSurefireMojo
             {
                 Artifact junitArtifact = getJunitArtifact();
                 boolean junit47Compatible = isJunit47Compatible( junitArtifact 
);
-                boolean junit5PlatformCompatible = getJunitPlatformArtifact() 
!= null;
+                boolean junit5PlatformCompatible = getJUnit5Artifact() != null;
                 if ( !junit47Compatible && !junit5PlatformCompatible )
                 {
                     if ( junitArtifact != null )
@@ -3142,24 +3138,19 @@ public abstract class AbstractSurefireMojo
                     surefireDependencyResolver.getProviderClasspathAsMap( 
"surefire-junit-platform", surefireVersion );
             Map<String, Artifact> testDependencies = 
testClasspath.getTestDependencies();
 
-            if ( hasDependencyPlatformEngine( testDependencies ) )
+            ProjectBuildingRequest request = 
getSession().getProjectBuildingRequest();
+            Plugin plugin = getPluginDescriptor().getPlugin();
+            Set<Artifact> engines = 
surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+
+            // tymto sa len zarovna verzia junit-platform-launcher z 
classpathu providera
+            if ( hasDependencyPlatformEngine( engines ) )
             {
-                String filterTestDependency = 
"org.junit.platform:junit-platform-engine";
-                getConsoleLogger().debug( "Test dependencies contain " + 
filterTestDependency );
-                narrowProviderDependencies( filterTestDependency, 
providerArtifacts, testDependencies );
+                Map<String, Artifact> engineArtifacts = 
artifactMapByVersionlessId( engines );
+                providerArtifacts.putAll( engineArtifacts );
             }
             else
             {
-                ProjectBuildingRequest request = 
getSession().getProjectBuildingRequest();
-                Plugin plugin = getPluginDescriptor().getPlugin();
-                Set<Artifact> engines = 
surefireDependencyResolver.resolvePluginDependencies( request, plugin );
-                if ( hasDependencyPlatformEngine( engines ) )
-                {
-                    Map<String, Artifact> engineArtifacts = 
artifactMapByVersionlessId( engines );
-                    providerArtifacts.putAll( engineArtifacts );
-                    alignVersions( providerArtifacts, engineArtifacts );
-                }
-                else if ( hasDependencyJupiterAPI( testDependencies ) )
+                if ( hasDependencyJupiterAPI( testDependencies ) )
                 {
                     String engineGroupId = "org.junit.jupiter";
                     String engineArtifactId = "junit-jupiter-engine";
@@ -3167,52 +3158,47 @@ public abstract class AbstractSurefireMojo
                     String api = "org.junit.jupiter:junit-jupiter-api";
                     getConsoleLogger().debug( "Test dependencies contain " + 
api + ". Resolving " + engineCoordinates );
                     String engineVersion = testDependencies.get( api 
).getBaseVersion();
-                    addEngineByApi( engineGroupId, engineArtifactId, 
engineVersion,
-                            providerArtifacts, testDependencies );
+                    addEngineByApi( engineGroupId, engineArtifactId, 
engineVersion, providerArtifacts );
+                }
+
+                if ( testDependencies.containsKey( "junit:junit" )
+                    || testDependencies.containsKey( "junit:junit-dep" ) )
+                {
+                    String engineGroupId = "org.junit.vintage";
+                    String engineArtifactId = "junit-vintage-engine";
+                    String engineCoordinates = engineGroupId + ":" + 
engineArtifactId;
+                    String api = "org.junit.jupiter:junit-jupiter-api";
+                    getConsoleLogger().debug( "Test dependencies contain 
JUnit4. Resolving " + engineCoordinates );
+                    String engineVersion = testDependencies.get( api 
).getBaseVersion();
+                    addEngineByApi( engineGroupId, engineArtifactId, 
engineVersion, providerArtifacts );
                 }
             }
-            providerArtifacts.keySet().removeAll( testDependencies.keySet() );
+
+            narrowDependencies( providerArtifacts, testDependencies );
+            alignProviderVersions( providerArtifacts );
+
             return new LinkedHashSet<>( providerArtifacts.values() );
         }
 
         private void addEngineByApi( String engineGroupId, String 
engineArtifactId, String engineVersion,
-                                     Map<String, Artifact> providerArtifacts, 
Map<String, Artifact> testDependencies )
+                                     Map<String, Artifact> providerArtifacts )
         {
-            providerArtifacts.keySet().removeAll( testDependencies.keySet() );
             for ( Artifact dep : resolve( engineGroupId, engineArtifactId, 
engineVersion, null, "jar" ) )
             {
                 String key = dep.getGroupId() + ":" + dep.getArtifactId();
-                if ( !testDependencies.containsKey( key ) )
-                {
-                    providerArtifacts.put( key, dep );
-                }
+                providerArtifacts.put( key, dep );
             }
-            alignVersions( providerArtifacts, testDependencies );
         }
 
-        private void narrowProviderDependencies( String filterTestDependency,
-                                                 Map<String, Artifact> 
providerArtifacts,
-                                                 Map<String, Artifact> 
testDependencies )
+        private void narrowDependencies( Map<String, Artifact> 
providerArtifacts,
+                                         Map<String, Artifact> 
testDependencies )
         {
-            Artifact engine = testDependencies.get( filterTestDependency );
-            String groupId = engine.getGroupId();
-            String artifactId = engine.getArtifactId();
-            String version = engine.getBaseVersion();
-            String classifier = engine.getClassifier();
-            String type = engine.getType();
-            for ( Artifact engineDep : resolve( groupId, artifactId, version, 
classifier, type ) )
-            {
-                providerArtifacts.remove( engineDep.getGroupId() + ":" + 
engineDep.getArtifactId() );
-                getConsoleLogger().debug( "Removed artifact " + engineDep
-                        + " from provider. Already appears in test classpath." 
);
-            }
-            alignVersions( providerArtifacts, testDependencies );
+            providerArtifacts.keySet().removeAll( testDependencies.keySet() );
         }
 
-        private void alignVersions( Map<String, Artifact> providerArtifacts,
-                                    Map<String, Artifact> 
referencedDependencies )
+        private void alignProviderVersions( Map<String, Artifact> 
providerArtifacts )
         {
-            String version = referencedDependencies.get( 
"org.junit.platform:junit-platform-commons" ).getBaseVersion();
+            String version = junitPlatformArtifact.getBaseVersion();
             for ( Artifact launcherArtifact : resolve( PROVIDER_DEP_GID, 
PROVIDER_DEP_AID, version, null, "jar" ) )
             {
                 String key = launcherArtifact.getGroupId() + ":" + 
launcherArtifact.getArtifactId();
@@ -3233,6 +3219,12 @@ public abstract class AbstractSurefireMojo
             return r;
         }
 
+        private boolean hasDependencyVintageEngine( Map<String, Artifact> 
dependencies )
+        {
+            return dependencies.containsKey( 
"org.junit.vintage:junit-vintage-engine" )
+                || hasGroupArtifactId( "org.junit.vintage", 
"junit-vintage-engine", getProject().getArtifact() );
+        }
+
         private boolean hasDependencyJupiterAPI( Map<String, Artifact> 
dependencies )
         {
             return dependencies.containsKey( 
"org.junit.jupiter:junit-jupiter-api" )
@@ -3389,10 +3381,10 @@ public abstract class AbstractSurefireMojo
                 logDebugOrCliShowErrors( "Using configured provider " + 
providerToAdd.getProviderName() );
                 providersToRun.add( providerToAdd );
             }
-            return manuallyConfiguredProviders.isEmpty() ? 
autoDetectOneProvider() : providersToRun;
+            return manuallyConfiguredProviders.isEmpty() ? 
autoDetectOneWellKnownProvider() : providersToRun;
         }
 
-        @Nonnull private List<ProviderInfo> autoDetectOneProvider()
+        @Nonnull private List<ProviderInfo> autoDetectOneWellKnownProvider()
         {
             List<ProviderInfo> providersToRun = new ArrayList<>();
             for ( ProviderInfo wellKnownProvider : wellKnownProviders )
diff --git a/surefire-its/src/test/resources/junit-4-5/pom.xml 
b/surefire-its/src/test/resources/junit-4-5/pom.xml
new file mode 100644
index 0000000..7173eb1
--- /dev/null
+++ b/surefire-its/src/test/resources/junit-4-5/pom.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>junit-4-5</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.testSource>1.8</maven.compiler.testSource>
+        <maven.compiler.testTarget>1.8</maven.compiler.testTarget>
+    </properties>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>3.0.0-SNAPSHOT</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>both-engines</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.junit.jupiter</groupId>
+                    <artifactId>junit-jupiter-engine</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
+            <id>api-and-engines</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.junit.jupiter</groupId>
+                    <artifactId>junit-jupiter-api</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
+            <id>both-api</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.junit.jupiter</groupId>
+                    <artifactId>junit-jupiter-api</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                    <version>4.13</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
+            <id>select-junit4</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.junit.jupiter</groupId>
+                    <artifactId>junit-jupiter-api</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                    <version>4.13</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <dependencies>
+                            <dependency>
+                                <groupId>org.junit.vintage</groupId>
+                                <artifactId>junit-vintage-engine</artifactId>
+                                <version>5.6.2</version>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>select-junit5</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.junit.jupiter</groupId>
+                    <artifactId>junit-jupiter-api</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                    <version>4.13</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <dependencies>
+                            <dependency>
+                                <groupId>org.junit.jupiter</groupId>
+                                <artifactId>junit-jupiter-engine</artifactId>
+                                <version>5.6.2</version>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
\ No newline at end of file
diff --git 
a/surefire-its/src/test/resources/junit-4-5/src/test/java/pkg/JUnit4Test.java 
b/surefire-its/src/test/resources/junit-4-5/src/test/java/pkg/JUnit4Test.java
new file mode 100644
index 0000000..04c7f99
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit-4-5/src/test/java/pkg/JUnit4Test.java
@@ -0,0 +1,10 @@
+package pkg;
+
+import org.junit.Test;
+
+public class JUnit4Test {
+    @Test
+    public void test() {
+
+    }
+}
diff --git 
a/surefire-its/src/test/resources/junit-4-5/src/test/java/pkg/JUnit5Test.java 
b/surefire-its/src/test/resources/junit-4-5/src/test/java/pkg/JUnit5Test.java
new file mode 100644
index 0000000..916eeab
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit-4-5/src/test/java/pkg/JUnit5Test.java
@@ -0,0 +1,10 @@
+package pkg;
+
+import org.junit.jupiter.api.Test;
+
+class JUnit5Test {
+    @Test
+    public void test() {
+
+    }
+}
diff --git a/surefire-its/src/test/resources/junit5-runner/pom.xml 
b/surefire-its/src/test/resources/junit5-runner/pom.xml
new file mode 100644
index 0000000..b4b150b
--- /dev/null
+++ b/surefire-its/src/test/resources/junit5-runner/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>junit5-runner</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.testSource>1.8</maven.compiler.testSource>
+        <maven.compiler.testTarget>1.8</maven.compiler.testTarget>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>5.6.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-runner</artifactId>
+            <version>1.6.2</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>3.0.0-SNAPSHOT</version>
+                    <configuration>
+                        <test>JUnit5Tests</test>
+                    </configuration>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.apache.maven.surefire</groupId>
+                            <artifactId>surefire-junit47</artifactId>
+                            <version>3.0.0-SNAPSHOT</version>
+                        </dependency>
+                    </dependencies>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+</project>
diff --git 
a/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/RootTest.java
 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/RootTest.java
new file mode 100644
index 0000000..74928ec
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/RootTest.java
@@ -0,0 +1,10 @@
+package examples;
+
+import org.junit.Test;
+
+class RootTest {
+    @Test
+    public void test() {
+
+    }
+}
diff --git 
a/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/a/ATest.java
 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/a/ATest.java
new file mode 100644
index 0000000..620f932
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/a/ATest.java
@@ -0,0 +1,10 @@
+package examples.a;
+
+import org.junit.Test;
+
+public class ATest {
+    @Test
+    public void test() {
+
+    }
+}
diff --git 
a/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/b/BTest.java
 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/b/BTest.java
new file mode 100644
index 0000000..3a36713
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/examples/b/BTest.java
@@ -0,0 +1,10 @@
+package examples.b;
+
+import org.junit.Test;
+
+public class BTest {
+    @Test
+    public void test() {
+
+    }
+}
diff --git 
a/surefire-its/src/test/resources/junit5-runner/src/test/java/pkg/JUnit5Tests.java
 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/pkg/JUnit5Tests.java
new file mode 100644
index 0000000..4f2788a
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit5-runner/src/test/java/pkg/JUnit5Tests.java
@@ -0,0 +1,15 @@
+package pkg;
+
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.platform.suite.api.ExcludeTags;
+import org.junit.platform.suite.api.IncludePackages;
+import org.junit.platform.suite.api.SelectPackages;
+import org.junit.runner.RunWith;
+
+@RunWith(JUnitPlatform.class)
+@SelectPackages("examples")
+@IncludePackages("examples.a")
+@ExcludeTags("PROD")
+public class JUnit5Tests {
+
+}
diff --git a/surefire-its/src/test/resources/junit5-testng/pom.xml 
b/surefire-its/src/test/resources/junit5-testng/pom.xml
new file mode 100644
index 0000000..6bf6829
--- /dev/null
+++ b/surefire-its/src/test/resources/junit5-testng/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>testng-junit5</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.testSource>1.8</maven.compiler.testSource>
+        <maven.compiler.testTarget>1.8</maven.compiler.testTarget>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <version>7.1.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.github.testng-team</groupId>
+            <artifactId>testng-junit5</artifactId>
+            <version>0.0.1</version>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.platform</groupId>
+                    <artifactId>junit-platform-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>3.0.0-SNAPSHOT</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>both-engines</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.junit.jupiter</groupId>
+                    <artifactId>junit-jupiter-engine</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
+            <id>both-api</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.junit.jupiter</groupId>
+                    <artifactId>junit-jupiter-api</artifactId>
+                    <version>5.6.2</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+    </profiles>
+
+</project>
diff --git 
a/surefire-its/src/test/resources/junit5-testng/src/test/java/pkg/JUnit5Test.java
 
b/surefire-its/src/test/resources/junit5-testng/src/test/java/pkg/JUnit5Test.java
new file mode 100644
index 0000000..916eeab
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit5-testng/src/test/java/pkg/JUnit5Test.java
@@ -0,0 +1,10 @@
+package pkg;
+
+import org.junit.jupiter.api.Test;
+
+class JUnit5Test {
+    @Test
+    public void test() {
+
+    }
+}
diff --git 
a/surefire-its/src/test/resources/junit5-testng/src/test/java/pkg/TestNGTest.java
 
b/surefire-its/src/test/resources/junit5-testng/src/test/java/pkg/TestNGTest.java
new file mode 100644
index 0000000..5b2443d
--- /dev/null
+++ 
b/surefire-its/src/test/resources/junit5-testng/src/test/java/pkg/TestNGTest.java
@@ -0,0 +1,10 @@
+package pkg;
+
+import org.testng.annotations.Test;
+
+public class TestNGTest {
+    @Test
+    public void test() {
+
+    }
+}

Reply via email to