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 ed946b63ac..d0998e622f 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
@@ -2385,7 +2385,8 @@ private Artifact getJunitDepArtifact()
private Artifact getJUnit5Artifact()
{
- if ( getProjectArtifactMap().get( "org.junit.platform:junit-platform-runner" ) != null )
+ if ( getProjectArtifactMap().containsKey( "org.junit.platform:junit-platform-runner" )
+ || getPluginArtifactMap().containsKey( "org.junit.platform:junit-platform-runner" ) )
{
return null;
}
@@ -2393,7 +2394,7 @@ private Artifact getJUnit5Artifact()
Artifact artifact = getPluginArtifactMap().get( "org.junit.platform:junit-platform-engine" );
if ( artifact == null )
{
- return getProjectArtifactMap().get( "org.junit.platform:junit-platform-commons" );
+ artifact = getProjectArtifactMap().get( "org.junit.platform:junit-platform-commons" );
}
return artifact;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
index 4cce707ace..2810764f74 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
@@ -774,6 +774,54 @@ public void shouldExistTmpDirectory() throws IOException
.isDirectory();
}
+ @Test
+ public void shouldNotBeJunit5ArtifactInPluginDeps() throws Exception
+ {
+ Artifact testClasspathJupiter = new DefaultArtifact( "org.junit.jupiter", "junit-jupiter-engine",
+ createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ Artifact testClasspathPlatformEng = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
+ createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ Artifact testClasspathCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
+ createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ setProjectDepedenciesToMojo( testClasspathJupiter, testClasspathPlatformEng, testClasspathCommons );
+
+ Artifact pluginDep1 = new DefaultArtifact( "org.junit.platform", "junit-platform-runner",
+ createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ Artifact pluginDep2 = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
+ createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ addPluginDependencies( pluginDep1, pluginDep2 );
+
+ Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+ assertThat( junitPlatformArtifact ).isNull();
+ }
+
+ @Test
+ public void shouldNotBeJunit5ArtifactInProjectDeps() throws Exception
+ {
+ Artifact testClasspathJupiter = new DefaultArtifact( "org.junit.jupiter", "junit-jupiter-engine",
+ createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ Artifact testClasspathPlatformEng = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
+ createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ Artifact testClasspathCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
+ createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ Artifact testClasspathRunner = new DefaultArtifact( "org.junit.platform", "junit-platform-runner",
+ createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+ setProjectDepedenciesToMojo( testClasspathJupiter, testClasspathPlatformEng, testClasspathCommons,
+ testClasspathRunner );
+
+ Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+ assertThat( junitPlatformArtifact ).isNull();
+ }
+
@Test
public void shouldSmartlyResolveJUnit5ProviderWithJUnit4() throws Exception
{
diff --git a/maven-surefire-plugin/src/site/apt/examples/junit-platform.apt.vm b/maven-surefire-plugin/src/site/apt/examples/junit-platform.apt.vm
index e1426a680a..3467ea368f 100644
--- a/maven-surefire-plugin/src/site/apt/examples/junit-platform.apt.vm
+++ b/maven-surefire-plugin/src/site/apt/examples/junit-platform.apt.vm
@@ -411,6 +411,42 @@ Using JUnit 5 Platform
+---+
+** JUnit5 Suite
+
+ For more information see this
+ {{{https://github.com/apache/maven-surefire/tree/master/surefire-its/src/test/resources/junit5-suite}example}}
+ and the {{{https://junit.org/junit5/docs/current/user-guide/#junit-platform-suite-engine}tutorial}}.
+
++---+
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.8.2
+ test
+
+
+ org.junit.platform
+ junit-platform-suite-engine
+ 1.8.2
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ JUnit5Tests
+
+
+
+
+
++---+
+
* Provider Selection
If nothing is configured, Surefire detects which JUnit version to use by the following algorithm:
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java
index 02c2706382..ffebb8c069 100644
--- a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java
@@ -77,13 +77,9 @@ public static Iterable