You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2020/05/09 01:00:39 UTC

[maven-surefire] branch SUREFIRE-1787 updated: unit tests

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

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


The following commit(s) were added to refs/heads/SUREFIRE-1787 by this push:
     new 6e5b893  unit tests
6e5b893 is described below

commit 6e5b8931110f9f22c537ac2972b45dbe5d6526a5
Author: tibordigana <ti...@apache.org>
AuthorDate: Sat May 9 03:00:11 2020 +0200

    unit tests
---
 .../plugin/surefire/AbstractSurefireMojo.java      |  62 ++-
 .../surefire/SurefireDependencyResolver.java       |  16 +-
 .../plugin/surefire/AbstractSurefireMojoTest.java  | 444 +++++++++++----------
 .../surefire/SurefireDependencyResolverTest.java   |   5 +-
 pom.xml                                            |   2 +-
 5 files changed, 271 insertions(+), 258 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 055eff0..67686ce 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
@@ -119,6 +119,7 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 
 import static java.lang.Boolean.TRUE;
+import static java.lang.Integer.parseInt;
 import static java.lang.Thread.currentThread;
 import static java.util.Arrays.asList;
 import static java.util.Collections.addAll;
@@ -126,7 +127,6 @@ import static java.util.Collections.singletonList;
 import static java.util.Collections.singletonMap;
 import static org.apache.maven.surefire.shared.lang3.StringUtils.substringBeforeLast;
 import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_WINDOWS;
-import static org.apache.maven.artifact.ArtifactUtils.artifactMapByVersionlessId;
 import static org.apache.maven.plugin.surefire.SurefireDependencyResolver.isWithinVersionSpec;
 import static org.apache.maven.plugin.surefire.util.DependencyScanner.filter;
 import static org.apache.maven.plugin.surefire.SurefireHelper.replaceThreadNumberPlaceholders;
@@ -2318,7 +2318,7 @@ public abstract class AbstractSurefireMojo
         Artifact artifact = getPluginArtifactMap().get( "org.junit.platform:junit-platform-engine" );
         if ( artifact == null )
         {
-            artifact = getProjectArtifactMap().get( "org.junit.platform:junit-platform-commons" );
+            return getProjectArtifactMap().get( "org.junit.platform:junit-platform-commons" );
         }
 
         return artifact;
@@ -2499,7 +2499,7 @@ public abstract class AbstractSurefireMojo
         }
         else
         {
-            return Integer.parseInt( trimmed );
+            return parseInt( trimmed );
         }
     }
 
@@ -3104,7 +3104,7 @@ public abstract class AbstractSurefireMojo
         private final Artifact junitPlatformArtifact;
         private final TestClassPath testClasspath;
 
-        JUnitPlatformProviderInfo( Artifact junitPlatformArtifact, TestClassPath testClasspath )
+        JUnitPlatformProviderInfo( Artifact junitPlatformArtifact, @Nonnull TestClassPath testClasspath )
         {
             this.junitPlatformArtifact = junitPlatformArtifact;
             this.testClasspath = testClasspath;
@@ -3140,24 +3140,24 @@ public abstract class AbstractSurefireMojo
 
             ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
             Plugin plugin = getPluginDescriptor().getPlugin();
-            Set<Artifact> engines = surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+            Map<String, Artifact> engines = surefireDependencyResolver.resolvePluginDependencies( request, plugin );
 
-            // tymto sa len zarovna verzia junit-platform-launcher z classpathu providera
             if ( hasDependencyPlatformEngine( engines ) )
             {
-                Map<String, Artifact> engineArtifacts = artifactMapByVersionlessId( engines );
-                providerArtifacts.putAll( engineArtifacts );
+                providerArtifacts.putAll( engines );
             }
-            else
+            else if ( !hasDependencyPlatformEngine( testDependencies ) )
             {
+                String engineVersion = null;
                 if ( hasDependencyJupiterAPI( testDependencies ) )
                 {
                     String engineGroupId = "org.junit.jupiter";
                     String engineArtifactId = "junit-jupiter-engine";
                     String engineCoordinates = engineGroupId + ":" + engineArtifactId;
                     String api = "org.junit.jupiter:junit-jupiter-api";
-                    getConsoleLogger().debug( "Test dependencies contain " + api + ". Resolving " + engineCoordinates );
-                    String engineVersion = testDependencies.get( api ).getBaseVersion();
+                    engineVersion = testDependencies.get( api ).getBaseVersion();
+                    getConsoleLogger().debug( "Test dependencies contain "
+                        + api + ". Resolving " + engineCoordinates + ":" + engineVersion );
                     addEngineByApi( engineGroupId, engineArtifactId, engineVersion, providerArtifacts );
                 }
 
@@ -3167,10 +3167,13 @@ public abstract class AbstractSurefireMojo
                     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 );
+
+                    if ( engineVersion != null )
+                    {
+                        getConsoleLogger().debug( "Test dependencies contain JUnit4. Resolving "
+                            + engineCoordinates + ":" + engineVersion );
+                        addEngineByApi( engineGroupId, engineArtifactId, engineVersion, providerArtifacts );
+                    }
                 }
             }
 
@@ -3219,35 +3222,16 @@ 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" )
-                    || hasGroupArtifactId( "org.junit.jupiter", "junit-jupiter-api", getProject().getArtifact() );
+            return dependencies.containsKey( "org.junit.jupiter:junit-jupiter-api" );
         }
 
         private boolean hasDependencyPlatformEngine( Map<String, Artifact> dependencies )
         {
-            return dependencies.containsKey( "org.junit.platform:junit-platform-engine" )
-                    || hasGroupArtifactId( "org.junit.platform", "junit-platform-engine", getProject().getArtifact() );
-        }
-
-        private boolean hasDependencyPlatformEngine( Collection<Artifact> dependencies )
-        {
-            if ( hasGroupArtifactId( "org.junit.platform", "junit-platform-engine", getProject().getArtifact() ) )
+            for ( Entry<String, Artifact> dependency : dependencies.entrySet() )
             {
-                return true;
-            }
-
-            for ( Artifact dependency : dependencies )
-            {
-                if ( dependency.getGroupId().equals( "org.junit.platform" )
-                        && dependency.getArtifactId().equals( "junit-platform-engine" ) )
+                if ( dependency.getKey().equals( "org.junit.platform:junit-platform-engine" ) )
                 {
                     return true;
                 }
@@ -3351,7 +3335,9 @@ public abstract class AbstractSurefireMojo
         {
             ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
             Plugin plugin = getPluginDescriptor().getPlugin();
-            return surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+            Map<String, Artifact> providerArtifacts =
+                surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+            return new LinkedHashSet<>( providerArtifacts.values() );
         }
     }
 
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java
index 6da4a1a..63d5582 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java
@@ -21,6 +21,7 @@ package org.apache.maven.plugin.surefire;
 
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -94,7 +95,7 @@ final class SurefireDependencyResolver
 
     private final String pluginName;
 
-    private final DependencyResolver depencencyResolver;
+    private final DependencyResolver dependencyResolver;
 
     private final boolean offline;
 
@@ -102,7 +103,7 @@ final class SurefireDependencyResolver
                                 ArtifactRepository localRepository,
                                 List<ArtifactRepository> pluginRemoteRepositories,
                                 List<ArtifactRepository> projectRemoteRepositories, String pluginName,
-                                DependencyResolver depencencyResolver, boolean offline )
+                                DependencyResolver dependencyResolver, boolean offline )
     {
         this.repositorySystem = repositorySystem;
         this.log = log;
@@ -110,7 +111,7 @@ final class SurefireDependencyResolver
         this.pluginRemoteRepositories = pluginRemoteRepositories;
         this.projectRemoteRepositories = projectRemoteRepositories;
         this.pluginName = pluginName;
-        this.depencencyResolver = depencencyResolver;
+        this.dependencyResolver = dependencyResolver;
         this.offline = offline;
     }
 
@@ -138,19 +139,20 @@ final class SurefireDependencyResolver
         }
     }
 
-    Set<Artifact> resolvePluginDependencies( ProjectBuildingRequest request, Plugin plugin )
+    Map<String, Artifact> resolvePluginDependencies( ProjectBuildingRequest request, Plugin plugin )
             throws MojoExecutionException
     {
         Collection<Dependency> pluginDependencies = plugin.getDependencies();
         try
         {
-            Iterable<ArtifactResult> resolvedPluginDependencies = depencencyResolver.resolveDependencies( request,
+            Iterable<ArtifactResult> resolvedPluginDependencies = dependencyResolver.resolveDependencies( request,
                 pluginDependencies, null, including( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, SCOPE_RUNTIME ) );
 
-            Set<Artifact> resolved = new LinkedHashSet<>();
+            Map<String, Artifact> resolved = new LinkedHashMap<>();
             for ( ArtifactResult resolvedPluginDependency : resolvedPluginDependencies )
             {
-                resolved.add( resolvedPluginDependency.getArtifact() );
+                Artifact artifact = resolvedPluginDependency.getArtifact();
+                resolved.put( artifact.getGroupId() + ":" + artifact.getArtifactId(), artifact );
             }
             return resolved;
         }
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 a2a8795..158a14c 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
@@ -28,6 +28,7 @@ import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
@@ -38,6 +39,7 @@ import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
 import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
+import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
 import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
 import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
 import org.apache.maven.surefire.booter.Classpath;
@@ -52,7 +54,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
-import org.mockito.ArgumentMatchers;
 import org.mockito.Mock;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
@@ -77,6 +78,7 @@ import static java.io.File.separatorChar;
 import static java.util.Arrays.asList;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singleton;
+import static java.util.Collections.singletonList;
 import static java.util.Collections.singletonMap;
 import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_WINDOWS;
 import static org.apache.maven.artifact.versioning.VersionRange.createFromVersion;
@@ -86,7 +88,6 @@ import static org.fest.assertions.MapAssert.entry;
 import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.when;
 import static org.mockito.Mockito.verify;
@@ -119,6 +120,14 @@ public class AbstractSurefireMojoTest
     {
         MavenSession session = mock( MavenSession.class );
         mojo.setSession( session );
+
+        PluginDescriptor pluginDescriptor = mock( PluginDescriptor.class );
+        Plugin plugin = new Plugin();
+        plugin.setGroupId( "org.apache.maven.surefire" );
+        plugin.setArtifactId( "maven-surefire-plugin" );
+        plugin.setVersion( "1" );
+        when( pluginDescriptor.getPlugin() ).thenReturn( plugin );
+        mojo.setPluginDescriptor( pluginDescriptor );
     }
 
     @Test
@@ -552,13 +561,15 @@ public class AbstractSurefireMojoTest
 
         final VersionRange surefireVersion = createFromVersion( "1" );
 
-        Artifact junitPlatformArtifact = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
+        Artifact testClasspathJUnit = new DefaultArtifact( "junit", "junit",
+            createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Artifact testClasspathJUnit = new DefaultArtifact( "junit", "junit", createFromVersion( "4.12" ), null, "jar",
-                null, mock( ArtifactHandler.class ) );
+        Artifact testClasspathHamcrest = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
+            createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Iterable<Artifact> testArtifacts = singleton( testClasspathJUnit );
+        Collection<Artifact> testArtifacts = new ArrayList<>();
+        testArtifacts.add( testClasspathJUnit );
+        testArtifacts.add( testClasspathHamcrest );
 
         File classesDirectory = new File( "target/classes" );
 
@@ -588,7 +599,6 @@ public class AbstractSurefireMojoTest
             }
         } );
         final ArtifactResolutionResult surefireProviderResolutionResult = mock( ArtifactResolutionResult.class );
-        final ArtifactResolutionResult junit4ResolutionResult = mock( ArtifactResolutionResult.class );
         when( repositorySystem.resolve( any( ArtifactResolutionRequest.class ) ) )
                 .thenAnswer( new Answer<ArtifactResolutionResult>()
                 {
@@ -601,35 +611,20 @@ public class AbstractSurefireMojoTest
                         {
                             return surefireProviderResolutionResult;
                         }
-                        else if ( artifact.getGroupId().equals( "junit" )
-                                && artifact.getArtifactId().equals( "junit" )
-                                && artifact.getVersion().equals( "4.12" ) )
+                        else if ( "org.junit.platform".equals( artifact.getGroupId() )
+                            && "junit-platform-launcher".equals( artifact.getArtifactId() )
+                            && "1.4.0".equals( artifact.getVersion() ) )
                         {
-                            return junit4ResolutionResult;
+                            return createExpectedJUnitPlatformLauncherResolutionResult();
                         }
                         else
                         {
-                            fail();
+                            fail( artifact.getGroupId() + ":" + artifact.getArtifactId() );
                             return null;
                         }
                     }
                 } );
 
-        DependencyResolver dependencyResolver = mock( DependencyResolver.class );
-        when( dependencyResolver.resolveDependencies( any( ProjectBuildingRequest.class ),
-                ArgumentMatchers.<Dependency>anyCollection(), isNull( Collection.class ),
-                any( TransformableFilter.class ) ) )
-                .thenAnswer( new Answer<Object>()
-                {
-                    @Override
-                    public Object answer( InvocationOnMock invocation )
-                    {
-                        Collection deps = (Collection) invocation.getArguments()[1];
-                        assertThat( deps ).isEmpty();
-                        return emptySet();
-                    }
-                } );
-
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
                 surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact launcher = new DefaultArtifact( "org.junit.platform", "junit-platform-launcher",
@@ -654,19 +649,54 @@ public class AbstractSurefireMojoTest
         when( surefireProviderResolutionResult.getArtifacts() )
                 .thenReturn( providerArtifacts );
 
-        Artifact junit = new DefaultArtifact( "junit", "junit",
-                createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) );
-        Artifact hamcrest = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
-                createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
-        Set<Artifact> junitArtifacts = new HashSet<>();
-        junitArtifacts.add( junit );
-        junitArtifacts.add( hamcrest );
-        when( junit4ResolutionResult.getArtifacts() )
-                .thenReturn( junitArtifacts );
-
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
-        mojo.setDependencyResolver( dependencyResolver );
+        mojo.setDependencyResolver( new DependencyResolverMock()
+        {
+            @Override
+            public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                                 Collection<Dependency> dependencies,
+                                                                 Collection<Dependency> managedDependencies,
+                                                                 TransformableFilter filter )
+            {
+                assertThat( dependencies ).hasSize( 1 );
+                Dependency pluginDependency = dependencies.iterator().next();
+                assertThat( pluginDependency.getGroupId() ).isEqualTo( "org.junit.vintage" );
+                assertThat( pluginDependency.getArtifactId() ).isEqualTo( "junit-vintage-engine" );
+                assertThat( pluginDependency.getVersion() ).isEqualTo( "5.4.0" );
+
+                Artifact a1 = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
+                    createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+                Artifact a2 = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
+                    createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+                Artifact a3 = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
+                    createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+                Artifact a4 = new DefaultArtifact( "junit", "junit",
+                    createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+                Artifact a5 = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
+                    createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+                Artifact a6 = new DefaultArtifact( "org.opentest4j", "opentest4j",
+                    createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+                final Artifact a7 = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
+                    createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+                Collection<ArtifactResult> it = new ArrayList<>();
+                it.add( toArtifactResult( a1 ) );
+                it.add( toArtifactResult( a2 ) );
+                it.add( toArtifactResult( a3 ) );
+                it.add( toArtifactResult( a4 ) );
+                it.add( toArtifactResult( a5 ) );
+                it.add( toArtifactResult( a6 ) );
+                it.add( toArtifactResult( a7 ) );
+                return it;
+            }
+        } );
 
         invokeMethod( mojo, "setupStuff" );
 
@@ -678,34 +708,42 @@ public class AbstractSurefireMojoTest
         Plugin p = mock( Plugin.class );
         when( pluginDescriptor.getPlugin() )
                 .thenReturn( p );
+        Artifact pluginDependency = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
+            createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
         when( p.getDependencies() )
-                .thenReturn( Collections.<Dependency>emptyList() );
+                .thenReturn( singletonList( toDependency( pluginDependency ) ) );
+
+        Artifact pluginTransitiveDependency = new DefaultArtifact( "org.junit.platform", "junit-platform-launcher",
+            createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( pluginTransitiveDependency, testClasspathWrapper );
 
         Artifact expectedProvider = new DefaultArtifact( "org.apache.maven.surefire", "surefire-junit-platform",
                 surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact expectedCommonJava5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
                 surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact expectedLauncher = new DefaultArtifact( "org.junit.platform", "junit-platform-launcher",
-                createFromVersion( "1.3.2" ), null, "jar", null, mock( ArtifactHandler.class ) );
+                createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact expectedApiguardian = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
                 createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact expectedJUnit5Engine = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
-                createFromVersion( "1.3.2" ), null, "jar", null, mock( ArtifactHandler.class ) );
+                createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact expectedOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact expectedPlatformCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
-                createFromVersion( "1.3.2" ), null, "jar", null, mock( ArtifactHandler.class ) );
+                createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+        Artifact expectedEngine = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
+            createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
         assertThat( prov.getProviderClasspath() )
-                .hasSize( 7 )
+                .hasSize( 8 )
                 .containsOnly( expectedProvider, expectedCommonJava5, expectedLauncher, expectedApiguardian,
-                        expectedJUnit5Engine, expectedOpentest4j, expectedPlatformCommons );
+                        expectedJUnit5Engine, expectedOpentest4j, expectedPlatformCommons, expectedEngine );
 
         assertThat( testClasspathWrapper.getTestDependencies() )
-                .hasSize( 1 )
-                .includes( entry( "junit:junit", testClasspathJUnit ) );
+                .hasSize( 2 )
+                .includes( entry( "junit:junit", testClasspathJUnit ),
+                    entry( "org.hamcrest:hamcrest-core", testClasspathHamcrest ) );
     }
 
     @Test
@@ -716,21 +754,18 @@ public class AbstractSurefireMojoTest
                 null, "jar", null, mock( ArtifactHandler.class ) ) );
         mojo.setProject( mavenProject );
 
-        final VersionRange surefireVersion = createFromVersion( "1" );
-
-        Artifact junitPlatformArtifact = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
+        VersionRange surefireVersion = createFromVersion( "1" );
 
-        final Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
+        Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
                 createFromVersion( "1.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        final Artifact testClasspathVintage = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
+        Artifact testClasspathVintage = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
                 createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        final Artifact testClasspathApiguardian = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
+        Artifact testClasspathApiguardian = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
                 createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        final Artifact testClasspathPlatformEng = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
+        Artifact testClasspathPlatformEng = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
                 createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
         Artifact testClasspathJUnit4 = new DefaultArtifact( "junit", "junit",
@@ -739,10 +774,10 @@ public class AbstractSurefireMojoTest
         Artifact testClasspathHamcrest = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
                 createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        final Artifact testClasspathOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
+        Artifact testClasspathOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        final Artifact testClasspathCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
+        Artifact testClasspathCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
                 createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
         Iterable<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathVintage,
@@ -777,7 +812,6 @@ public class AbstractSurefireMojoTest
             }
         } );
         final ArtifactResolutionResult surefireProviderResolutionResult = mock( ArtifactResolutionResult.class );
-        final ArtifactResolutionResult junit4ResolutionResult = mock( ArtifactResolutionResult.class );
         when( repositorySystem.resolve( any( ArtifactResolutionRequest.class ) ) )
                 .thenAnswer( new Answer<ArtifactResolutionResult>()
                 {
@@ -791,12 +825,6 @@ public class AbstractSurefireMojoTest
                             return surefireProviderResolutionResult;
                         }
                         else if ( "org.junit.platform".equals( resolvable.getGroupId() )
-                                && "junit-platform-engine".equals( resolvable.getArtifactId() )
-                                && "1.4.0".equals( resolvable.getVersion() ) )
-                        {
-                            return createVintageEngineResolutionResult();
-                        }
-                        else if ( "org.junit.platform".equals( resolvable.getGroupId() )
                                 && "junit-platform-launcher".equals( resolvable.getArtifactId() )
                                 && "1.4.0".equals( resolvable.getVersion() ) )
                         {
@@ -804,7 +832,7 @@ public class AbstractSurefireMojoTest
                         }
                         else
                         {
-                            fail();
+                            fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
                             return null;
                         }
                     }
@@ -830,26 +858,36 @@ public class AbstractSurefireMojoTest
         providerArtifacts.add( engine );
         providerArtifacts.add( commons );
         providerArtifacts.add( opentest4j );
-
         when( surefireProviderResolutionResult.getArtifacts() )
                 .thenReturn( providerArtifacts );
 
-        Artifact junit = new DefaultArtifact( "junit", "junit",
-                createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) );
-        Artifact hamcrest = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
-                createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
-        Set<Artifact> junitArtifacts = new HashSet<>();
-        junitArtifacts.add( junit );
-        junitArtifacts.add( hamcrest );
-        when( junit4ResolutionResult.getArtifacts() )
-                .thenReturn( junitArtifacts );
-
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
+        mojo.setDependencyResolver( new DependencyResolverMock()
+        {
+            @Override
+            public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                                 Collection<Dependency> dependencies,
+                                                                 Collection<Dependency> managedDependencies,
+                                                                 TransformableFilter filter )
+            {
+                assertThat( dependencies ).isEmpty();
+                return emptySet();
+            }
+        } );
 
         invokeMethod( mojo, "setupStuff" );
+
+        PluginDescriptor pluginDescriptor = mock( PluginDescriptor.class );
+        mojo.setPluginDescriptor( pluginDescriptor );
+        Plugin p = mock( Plugin.class );
+        when( pluginDescriptor.getPlugin() )
+            .thenReturn( p );
+        when( p.getDependencies() )
+            .thenReturn( Collections.<Dependency>emptyList() );
+
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
 
         Artifact expectedProvider = new DefaultArtifact( "org.apache.maven.surefire", "surefire-junit-platform",
                 surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
@@ -883,16 +921,13 @@ public class AbstractSurefireMojoTest
 
         final VersionRange surefireVersion = createFromVersion( "1" );
 
-        Artifact junitPlatformArtifact = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
-        final Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
+        Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
                 createFromVersion( "1.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        final Artifact testClasspathCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
+        Artifact testClasspathCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
                 createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        final Artifact testClasspathApiguardian = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
+        Artifact testClasspathApiguardian = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
                 createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
         Iterable<Artifact> testArtifacts =
@@ -938,32 +973,34 @@ public class AbstractSurefireMojoTest
                         {
                             return createSurefireProviderResolutionResult( surefireVersion );
                         }
+                        else if ( "org.junit.platform".equals( resolvable.getGroupId() )
+                            && "junit-platform-launcher".equals( resolvable.getArtifactId() )
+                            && "1.4.0".equals( resolvable.getVersion() ) )
+                        {
+                            return createExpectedJUnitPlatformLauncherResolutionResult();
+                        }
                         else
                         {
-                            fail();
+                            fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
                             return null;
                         }
                     }
                 } );
 
-        DependencyResolver dependencyResolver = mock( DependencyResolver.class );
-        when( dependencyResolver.resolveDependencies( any( ProjectBuildingRequest.class ),
-                ArgumentMatchers.<Dependency>anyCollection(), isNull( Collection.class ),
-                any( TransformableFilter.class ) ) )
-                .thenAnswer( new Answer<Object>()
-                {
-                    @Override
-                    public Object answer( InvocationOnMock invocation )
-                    {
-                        Collection deps = (Collection) invocation.getArguments()[1];
-                        assertThat( deps ).isEmpty();
-                        return emptySet();
-                    }
-                } );
-
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
-        mojo.setDependencyResolver( dependencyResolver );
+        mojo.setDependencyResolver( new DependencyResolverMock()
+        {
+            @Override
+            public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                                 Collection<Dependency> dependencies,
+                                                                 Collection<Dependency> managedDependencies,
+                                                                 TransformableFilter filter )
+            {
+                assertThat( dependencies ).isEmpty();
+                return emptySet();
+            }
+        } );
 
         invokeMethod( mojo, "setupStuff" );
 
@@ -979,7 +1016,7 @@ public class AbstractSurefireMojoTest
                 .thenReturn( Collections.<Dependency>emptyList() );
 
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact provider = new DefaultArtifact( "org.apache.maven.surefire", "surefire-junit-platform",
@@ -987,9 +1024,9 @@ public class AbstractSurefireMojoTest
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
                 surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact launcher = new DefaultArtifact( "org.junit.platform", "junit-platform-launcher",
-                createFromVersion( "1.3.2" ), null, "jar", null, mock( ArtifactHandler.class ) );
+                createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact engine = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
-                createFromVersion( "1.3.2" ), null, "jar", null, mock( ArtifactHandler.class ) );
+                createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
         Artifact opentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
         assertThat( resolvedProviderArtifacts )
@@ -1013,9 +1050,6 @@ public class AbstractSurefireMojoTest
 
         final VersionRange surefireVersion = createFromVersion( "1" );
 
-        Artifact junitPlatformArtifact = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
         final Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
                 createFromVersion( "1.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
@@ -1074,11 +1108,6 @@ public class AbstractSurefireMojoTest
                         {
                             return createSurefireProviderResolutionResult( surefireVersion );
                         }
-                        else if ( resolvable.equals( testClasspathJUnit5 )  )
-                        {
-                            return createResolutionResult( testClasspathJUnit5, testClasspathApiguardian,
-                                    testClasspathCommons, testClasspathOpentest4j );
-                        }
                         else if ( "org.junit.platform".equals( resolvable.getGroupId() )
                                 && "junit-platform-launcher".equals( resolvable.getArtifactId() )
                                 && "1.4.0".equals( resolvable.getVersion() ) )
@@ -1087,7 +1116,7 @@ public class AbstractSurefireMojoTest
                         }
                         else
                         {
-                            fail();
+                            fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
                             return null;
                         }
                     }
@@ -1095,10 +1124,22 @@ public class AbstractSurefireMojoTest
 
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
+        mojo.setDependencyResolver( new DependencyResolverMock()
+        {
+            @Override
+            public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                                 Collection<Dependency> dependencies,
+                                                                 Collection<Dependency> managedDependencies,
+                                                                 TransformableFilter filter )
+            {
+                assertThat( dependencies ).isEmpty();
+                return emptySet();
+            }
+        } );
 
         invokeMethod( mojo, "setupStuff" );
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
@@ -1128,9 +1169,6 @@ public class AbstractSurefireMojoTest
 
         final VersionRange surefireVersion = createFromVersion( "1" );
 
-        Artifact junitPlatformArtifact = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
         final Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
                 createFromVersion( "1.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
@@ -1189,11 +1227,6 @@ public class AbstractSurefireMojoTest
                         {
                             return createSurefireProviderResolutionResult( surefireVersion );
                         }
-                        else if ( resolvable.equals( testClasspathJupiterApi )  )
-                        {
-                            return createResolutionResult( testClasspathJupiterApi, testClasspathApiguardian,
-                                    testClasspathCommons, testClasspathOpentest4j );
-                        }
                         else if ( "org.junit.platform".equals( resolvable.getGroupId() )
                                 && "junit-platform-launcher".equals( resolvable.getArtifactId() )
                                 && "1.4.0".equals( resolvable.getVersion() ) )
@@ -1208,30 +1241,26 @@ public class AbstractSurefireMojoTest
                         }
                         else
                         {
-                            fail();
+                            fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
                             return null;
                         }
                     }
                 } );
 
-        DependencyResolver dependencyResolver = mock( DependencyResolver.class );
-        when( dependencyResolver.resolveDependencies( any( ProjectBuildingRequest.class ),
-                ArgumentMatchers.<Dependency>anyCollection(), isNull( Collection.class ),
-                any( TransformableFilter.class ) ) )
-                .thenAnswer( new Answer<Object>()
-                {
-                    @Override
-                    public Object answer( InvocationOnMock invocation )
-                    {
-                        Collection deps = (Collection) invocation.getArguments()[1];
-                        assertThat( deps ).isEmpty();
-                        return emptySet();
-                    }
-                } );
-
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
-        mojo.setDependencyResolver( dependencyResolver );
+        mojo.setDependencyResolver( new DependencyResolverMock()
+        {
+            @Override
+            public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                                 Collection<Dependency> dependencies,
+                                                                 Collection<Dependency> managedDependencies,
+                                                                 TransformableFilter filter )
+            {
+                assertThat( dependencies ).isEmpty();
+                return emptySet();
+            }
+        } );
 
         invokeMethod( mojo, "setupStuff" );
 
@@ -1247,7 +1276,7 @@ public class AbstractSurefireMojoTest
                 .thenReturn( Collections.<Dependency>emptyList() );
 
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
@@ -1281,9 +1310,6 @@ public class AbstractSurefireMojoTest
 
         final VersionRange surefireVersion = createFromVersion( "1" );
 
-        Artifact junitPlatformArtifact = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
         final Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
                 createFromVersion( "1.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
@@ -1349,26 +1375,15 @@ public class AbstractSurefireMojoTest
                         {
                             return createSurefireProviderResolutionResult( surefireVersion );
                         }
-                        else if ( resolvable.equals( testClasspathJupiterApi )  )
-                        {
-                            return createResolutionResult( testClasspathJupiterApi, testClasspathApiguardian,
-                                    testClasspathCommons, testClasspathOpentest4j );
-                        }
                         else if ( "org.junit.platform".equals( resolvable.getGroupId() )
                                 && "junit-platform-launcher".equals( resolvable.getArtifactId() )
                                 && "1.4.0".equals( resolvable.getVersion() ) )
                         {
                             return createExpectedJUnitPlatformLauncherResolutionResult();
                         }
-                        else if ( "org.junit.platform".equals( resolvable.getGroupId() )
-                                && "junit-platform-engine".equals( resolvable.getArtifactId() )
-                                && "1.4.0".equals( resolvable.getVersion() ) )
-                        {
-                            return createVintageEngineResolutionResult();
-                        }
                         else
                         {
-                            fail();
+                            fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
                             return null;
                         }
                     }
@@ -1376,10 +1391,22 @@ public class AbstractSurefireMojoTest
 
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
+        mojo.setDependencyResolver( new DependencyResolverMock()
+        {
+            @Override
+            public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                                 Collection<Dependency> dependencies,
+                                                                 Collection<Dependency> managedDependencies,
+                                                                 TransformableFilter filter )
+            {
+                assertThat( dependencies ).isEmpty();
+                return emptySet();
+            }
+        } );
 
         invokeMethod( mojo, "setupStuff" );
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
@@ -1404,7 +1431,6 @@ public class AbstractSurefireMojoTest
     @Test
     public void shouldSmartlyResolveJUnit5ProviderWithJupiterEngineInPluginDependencies() throws Exception
     {
-
         final VersionRange surefireVersion = createFromVersion( "1" );
 
         final Artifact plugin = new DefaultArtifact( "org.apache.maven.surefire", "maven-surefire-plugin",
@@ -1447,9 +1473,6 @@ public class AbstractSurefireMojoTest
                 null, "jar", null, mock( ArtifactHandler.class ) ) );
         mojo.setProject( mavenProject );
 
-        Artifact junitPlatformArtifact = new DefaultArtifact( "g", "a",
-                createFromVersion( "0" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
         final Artifact testClasspathSomeTestArtifact = new DefaultArtifact( "third.party", "artifact",
                 createFromVersion( "1.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
@@ -1510,54 +1533,9 @@ public class AbstractSurefireMojoTest
                         {
                             return createExpectedJUnitPlatformLauncherResolutionResult();
                         }
-                        else if ( "org.apache.maven.surefire".equals( resolvable.getGroupId() )
-                                && "maven-surefire-plugin".equals( resolvable.getArtifactId() )
-                                && "1".equals( resolvable.getVersion() ) )
-                        {
-                            Set<Artifact> pluginItself = new HashSet<>();
-                            pluginItself.add( plugin );
-                            pluginItself.add( forkedBooter );
-                            ArtifactResolutionResult launcherResolutionResult = mock( ArtifactResolutionResult.class );
-                            when( launcherResolutionResult.getArtifacts() )
-                                    .thenReturn( pluginItself );
-                            return launcherResolutionResult;
-                        }
-                        else
-                        {
-                            fail();
-                            return null;
-                        }
-                    }
-                } );
-
-        DependencyResolver dependencyResolver = mock( DependencyResolver.class );
-        when( dependencyResolver.resolveDependencies( any( ProjectBuildingRequest.class ),
-                ArgumentMatchers.<Dependency>anyCollection(), isNull( Collection.class ),
-                any( TransformableFilter.class ) ) )
-                .thenAnswer( new Answer<Object>()
-                {
-                    @Override
-                    public Object answer( InvocationOnMock invocation )
-                    {
-                        Collection deps = (Collection) invocation.getArguments()[1];
-                        assertThat( deps ).hasSize( 1 );
-                        Dependency resolvable = (Dependency) deps.iterator().next();
-                        if ( "org.junit.jupiter".equals( resolvable.getGroupId() )
-                                && "junit-jupiter-engine".equals( resolvable.getArtifactId() )
-                                && "5.4.0".equals( resolvable.getVersion() ) )
-                        {
-                            Set<ArtifactResult> resolvedPluginDeps = new HashSet<>();
-                            resolvedPluginDeps.add( toArtifactResult( pluginDepJupiterEngine ) );
-                            resolvedPluginDeps.add( toArtifactResult( pluginDepPlatformEngine ) );
-                            resolvedPluginDeps.add( toArtifactResult( pluginDepJupiterApi ) );
-                            resolvedPluginDeps.add( toArtifactResult( pluginDepApiguardian ) );
-                            resolvedPluginDeps.add( toArtifactResult( pluginDepCommons ) );
-                            resolvedPluginDeps.add( toArtifactResult( pluginDepOpentest4j ) );
-                            return resolvedPluginDeps;
-                        }
                         else
                         {
-                            fail();
+                            fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
                             return null;
                         }
                     }
@@ -1565,12 +1543,41 @@ public class AbstractSurefireMojoTest
 
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
-        mojo.setDependencyResolver( dependencyResolver );
+        mojo.setDependencyResolver( new DependencyResolverMock()
+        {
+            @Override
+            public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                                 Collection<Dependency> dependencies,
+                                                                 Collection<Dependency> managedDependencies,
+                                                                 TransformableFilter filter )
+            {
+                assertThat( dependencies ).hasSize( 1 );
+                Dependency resolvable = (Dependency) dependencies.iterator().next();
+                if ( "org.junit.jupiter".equals( resolvable.getGroupId() )
+                    && "junit-jupiter-engine".equals( resolvable.getArtifactId() )
+                    && "5.4.0".equals( resolvable.getVersion() ) )
+                {
+                    Set<ArtifactResult> resolvedPluginDeps = new HashSet<>();
+                    resolvedPluginDeps.add( toArtifactResult( pluginDepJupiterEngine ) );
+                    resolvedPluginDeps.add( toArtifactResult( pluginDepPlatformEngine ) );
+                    resolvedPluginDeps.add( toArtifactResult( pluginDepJupiterApi ) );
+                    resolvedPluginDeps.add( toArtifactResult( pluginDepApiguardian ) );
+                    resolvedPluginDeps.add( toArtifactResult( pluginDepCommons ) );
+                    resolvedPluginDeps.add( toArtifactResult( pluginDepOpentest4j ) );
+                    return resolvedPluginDeps;
+                }
+                else
+                {
+                    fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
+                    return null;
+                }
+            }
+        } );
 
         invokeMethod( mojo, "setupStuff" );
 
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( pluginDepPlatformEngine, testClasspathWrapper );
 
         when( mojo.getSession().getProjectBuildingRequest() )
                 .thenReturn( mock( ProjectBuildingRequest.class ) );
@@ -1631,8 +1638,6 @@ public class AbstractSurefireMojoTest
         Set<Artifact> resolvedLauncherArtifacts = new HashSet<>();
         resolvedLauncherArtifacts.add( new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
                 createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "org.junit.jupiter", "junit-jupiter-api",
-                createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
         resolvedLauncherArtifacts.add( new DefaultArtifact( "junit", "junit",
                 createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
         resolvedLauncherArtifacts.add( new DefaultArtifact( "org.hamcrest", "hamcrest-core",
@@ -2227,6 +2232,25 @@ public class AbstractSurefireMojoTest
             }
         }
         return new AR();
+    }
 
+    private abstract static class DependencyResolverMock implements DependencyResolver
+    {
+        @Override
+        public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
+                                                             DependableCoordinate coordinate,
+                                                             TransformableFilter filter )
+        {
+            fail( "unexpected call of DependencyResolver" );
+            return null;
+        }
+
+        @Override
+        public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest, Model model,
+                                                             TransformableFilter filter )
+        {
+            fail( "unexpected call of DependencyResolver" );
+            return null;
+        }
     }
 }
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
index c90a857..d9fcf6f 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
@@ -47,6 +47,7 @@ import java.io.File;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
+import java.util.Map;
 import java.util.Set;
 
 import static java.util.Collections.singleton;
@@ -325,12 +326,12 @@ public class SurefireDependencyResolverTest
         when( resolutionResult.getArtifacts() )
             .thenReturn( singleton( providerAsArtifact ) );
 
-        Set<Artifact> providers = surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+        Map<String, Artifact> providers = surefireDependencyResolver.resolvePluginDependencies( request, plugin );
 
         verify( depencencyResolver, times( 1 ) )
             .resolveDependencies( request, dep.getValue(), null, filter.getValue() );
 
-        assertThat( providers )
+        assertThat( providers.values() )
             .hasSize( 1 )
             .containsOnly( providerAsArtifact );
 
diff --git a/pom.xml b/pom.xml
index 06361d2..796bcfd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -355,7 +355,7 @@
       <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
-        <version>2.27.0</version>
+        <version>2.28.2</version>
         <exclusions>
           <exclusion>
             <groupId>org.hamcrest</groupId>