diff --git a/maven-artifact/src/test/java/org/apache/maven/artifact/ArtifactUtilsTest.java b/maven-artifact/src/test/java/org/apache/maven/artifact/ArtifactUtilsTest.java
index 2cbe18e..485b3f6 100644
--- a/maven-artifact/src/test/java/org/apache/maven/artifact/ArtifactUtilsTest.java
+++ b/maven-artifact/src/test/java/org/apache/maven/artifact/ArtifactUtilsTest.java
@@ -27,7 +27,9 @@
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Tests {@link ArtifactUtils}.
@@ -45,13 +47,13 @@
     @Test
     public void testIsSnapshot()
     {
-        assertEquals( false, ArtifactUtils.isSnapshot( null ) );
-        assertEquals( false, ArtifactUtils.isSnapshot( "" ) );
-        assertEquals( false, ArtifactUtils.isSnapshot( "1.2.3" ) );
-        assertEquals( true, ArtifactUtils.isSnapshot( "1.2.3-SNAPSHOT" ) );
-        assertEquals( true, ArtifactUtils.isSnapshot( "1.2.3-snapshot" ) );
-        assertEquals( true, ArtifactUtils.isSnapshot( "1.2.3-20090413.094722-2" ) );
-        assertEquals( false, ArtifactUtils.isSnapshot( "1.2.3-20090413X094722-2"));
+        assertFalse( ArtifactUtils.isSnapshot( null ) );
+        assertFalse( ArtifactUtils.isSnapshot( "" ) );
+        assertFalse( ArtifactUtils.isSnapshot( "1.2.3" ) );
+        assertTrue( ArtifactUtils.isSnapshot( "1.2.3-SNAPSHOT" ) );
+        assertTrue( ArtifactUtils.isSnapshot( "1.2.3-snapshot" ) );
+        assertTrue( ArtifactUtils.isSnapshot( "1.2.3-20090413.094722-2" ) );
+        assertFalse( ArtifactUtils.isSnapshot( "1.2.3-20090413X094722-2" ) );
     }
 
     @Test
diff --git a/maven-artifact/src/test/java/org/apache/maven/artifact/DefaultArtifactTest.java b/maven-artifact/src/test/java/org/apache/maven/artifact/DefaultArtifactTest.java
index 3e9eb4d..4f91962 100644
--- a/maven-artifact/src/test/java/org/apache/maven/artifact/DefaultArtifactTest.java
+++ b/maven-artifact/src/test/java/org/apache/maven/artifact/DefaultArtifactTest.java
@@ -25,6 +25,7 @@
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class DefaultArtifactTest
@@ -146,8 +147,8 @@
     {
         VersionRange vr = VersionRange.createFromVersionSpec( "[1.0,2.0)" );
         artifact = new DefaultArtifact( groupId, artifactId, vr, scope, type, null, artifactHandler );
-        assertEquals( null, artifact.getVersion() );
-        assertEquals( null, artifact.getBaseVersion() );
+        assertNull( artifact.getVersion() );
+        assertNull( artifact.getBaseVersion() );
     }
 
 }
diff --git a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
index c1471b4..13f3ffa 100644
--- a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
+++ b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
@@ -187,7 +187,7 @@
     {
         ArtifactVersion v1 = newArtifactVersion( "1" );
         ArtifactVersion v2 = newArtifactVersion( "1.0" );
-        assertEquals( true, v1.equals( v2 ) );
+        assertTrue( v1.equals( v2 ) );
         assertEquals( v1.hashCode(), v2.hashCode() );
     }
 
diff --git a/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java b/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java
index dbde11e..a8b85d8 100644
--- a/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java
+++ b/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java
@@ -24,6 +24,7 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class DefaultProblemCollectorTest
 {
@@ -47,7 +48,7 @@
         assertEquals( "MESSAGE1",p1.getMessage() );
         assertEquals( -1, p1.getLineNumber() );
         assertEquals( -1, p1.getColumnNumber() );
-        assertEquals( null, p1.getException() );
+        assertNull( p1.getException() );
 
         Problem p2 = collector.getProblems().get(1);
         assertEquals( Severity.WARNING, p2.getSeverity() );
diff --git a/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemTest.java b/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemTest.java
index 4d9a3d8..6182f99 100644
--- a/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemTest.java
+++ b/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemTest.java
@@ -23,6 +23,7 @@
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertSame;
 
 public class DefaultProblemTest
@@ -82,7 +83,7 @@
     public void testGetException()
     {
         DefaultProblem problem = new DefaultProblem( null, null, null, -1, -1, null );
-        assertEquals( null, problem.getException() );
+        assertNull( problem.getException() );
 
         Exception e = new Exception();
         problem = new DefaultProblem( null, null, null, -1, -1, e );
diff --git a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolverTest.java b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolverTest.java
index 60a4834..9413111 100644
--- a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolverTest.java
+++ b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolverTest.java
@@ -36,6 +36,7 @@
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class LifecycleDependencyResolverTest extends AbstractCoreMavenComponentTestCase
 {
@@ -67,7 +68,7 @@
         MavenProject lib = session.getProjects().get( 1 );
         MavenProject war = session.getProjects().get( 2 );
 
-        assertEquals( null , war.getArtifactMap().get("org.apache.maven.its.mng6300:mng6300-lib").getFile() );
+        assertNull( war.getArtifactMap().get( "org.apache.maven.its.mng6300:mng6300-lib" ).getFile() );
 
         lib.getArtifact().setFile( new File( "lib.jar" ) );
 
diff --git a/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java b/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
index ff7cc05..e2f371e 100644
--- a/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
@@ -695,22 +695,22 @@
         throws Exception
     {
         PomTestWrapper pom = buildPom( "limited-inheritance/child" );
-        assertEquals( null, pom.getValue( "organization/url" ) );
-        assertEquals( null, pom.getValue( "issueManagement/system" ) );
+        assertNull( pom.getValue( "organization/url" ) );
+        assertNull( pom.getValue( "issueManagement/system" ) );
         assertEquals( 0, ( (List<?>) pom.getValue( "ciManagement/notifiers" ) ).size() );
         assertEquals( "child-distros", pom.getValue( "distributionManagement/repository/id" ) );
         assertEquals( "ssh://child.url/distros", pom.getValue( "distributionManagement/repository/url" ) );
-        assertEquals( null, pom.getValue( "distributionManagement/repository/name" ) );
+        assertNull( pom.getValue( "distributionManagement/repository/name" ) );
         assertEquals( true, pom.getValue( "distributionManagement/repository/uniqueVersion" ) );
         assertEquals( "default", pom.getValue( "distributionManagement/repository/layout" ) );
         assertEquals( "child-snaps", pom.getValue( "distributionManagement/snapshotRepository/id" ) );
         assertEquals( "ssh://child.url/snaps", pom.getValue( "distributionManagement/snapshotRepository/url" ) );
-        assertEquals( null, pom.getValue( "distributionManagement/snapshotRepository/name" ) );
+        assertNull( pom.getValue( "distributionManagement/snapshotRepository/name" ) );
         assertEquals( true, pom.getValue( "distributionManagement/snapshotRepository/uniqueVersion" ) );
         assertEquals( "default", pom.getValue( "distributionManagement/snapshotRepository/layout" ) );
         assertEquals( "child-site", pom.getValue( "distributionManagement/site/id" ) );
         assertEquals( "scp://child.url/site", pom.getValue( "distributionManagement/site/url" ) );
-        assertEquals( null, pom.getValue( "distributionManagement/site/name" ) );
+        assertNull( pom.getValue( "distributionManagement/site/name" ) );
     }
 
     @Test
@@ -912,7 +912,7 @@
         assertEquals( "CHILD-3", pom.getValue( prefix + "stringParams/stringParam[6]" ) );
         assertEquals( "CHILD-2", pom.getValue( prefix + "stringParams/stringParam[7]" ) );
         assertEquals( "CHILD-4", pom.getValue( prefix + "stringParams/stringParam[8]" ) );
-        assertEquals( null, pom.getValue( prefix + "stringParams/stringParam[9]" ) );
+        assertNull( pom.getValue( prefix + "stringParams/stringParam[9]" ) );
         assertEquals( "PARENT-1", pom.getValue( prefix + "listParam/listParam[1]" ) );
         assertEquals( "PARENT-3", pom.getValue( prefix + "listParam/listParam[2]" ) );
         assertEquals( "PARENT-2", pom.getValue( prefix + "listParam/listParam[3]" ) );
@@ -921,7 +921,7 @@
         assertEquals( "CHILD-3", pom.getValue( prefix + "listParam/listParam[6]" ) );
         assertEquals( "CHILD-2", pom.getValue( prefix + "listParam/listParam[7]" ) );
         assertEquals( "CHILD-4", pom.getValue( prefix + "listParam/listParam[8]" ) );
-        assertEquals( null, pom.getValue( prefix + "listParam/listParam[9]" ) );
+        assertNull( pom.getValue( prefix + "listParam/listParam[9]" ) );
     }
 
     /* MNG-4000 */
@@ -1105,8 +1105,8 @@
         assertEquals( "src", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@todir" ) );
         assertEquals( "true", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@overwrite" ) );
         assertEquals( "target", pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@dir" ) );
-        assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
-        assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
+        assertNull( pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
+        assertNull( pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
     }
 
     /** MNG-4053*/
@@ -1118,8 +1118,8 @@
         assertEquals( "src", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@todir" ) );
         assertEquals( "true", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@overwrite" ) );
         assertEquals( "target", pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@dir" ) );
-        assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
-        assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
+        assertNull( pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
+        assertNull( pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
     }
 
     @Test
@@ -1130,8 +1130,8 @@
         assertEquals( "src", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@todir" ) );
         assertEquals( "true", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@overwrite" ) );
         assertEquals( "target", pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@dir" ) );
-        assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
-        assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
+        assertNull( pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
+        assertNull( pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
     }
 
     @Test
diff --git a/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java b/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
index 5b245af..88d2490 100644
--- a/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
+++ b/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
@@ -30,7 +30,10 @@
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Tests {@link PluginDescriptorBuilder}.
@@ -59,8 +62,8 @@
         assertEquals( "2.3-SNAPSHOT", pd.getVersion() );
         assertEquals( "jar", pd.getGoalPrefix() );
         assertEquals( "plugin-description", pd.getDescription() );
-        assertEquals( false, pd.isIsolatedRealm() );
-        assertEquals( true, pd.isInheritedByDefault() );
+        assertFalse( pd.isIsolatedRealm() );
+        assertTrue( pd.isInheritedByDefault() );
         assertEquals( 2, pd.getMojos().size() );
         assertEquals( 1, pd.getDependencies().size() );
 
@@ -70,12 +73,12 @@
         assertEquals( "mojo-description", md.getDescription() );
         assertEquals( "runtime", md.getDependencyResolutionRequired() );
         assertEquals( "test", md.getDependencyCollectionRequired() );
-        assertEquals( false, md.isAggregator() );
-        assertEquals( false, md.isDirectInvocationOnly() );
-        assertEquals( true, md.isInheritedByDefault() );
-        assertEquals( false, md.isOnlineRequired() );
-        assertEquals( true, md.isProjectRequired() );
-        assertEquals( false, md.isThreadSafe() );
+        assertFalse( md.isAggregator() );
+        assertFalse( md.isDirectInvocationOnly() );
+        assertTrue( md.isInheritedByDefault() );
+        assertFalse( md.isOnlineRequired() );
+        assertTrue( md.isProjectRequired() );
+        assertFalse( md.isThreadSafe() );
         assertEquals( "package", md.getPhase() );
         assertEquals( "org.apache.maven.plugin.jar.JarMojo", md.getImplementation() );
         assertEquals( "antrun", md.getComponentConfigurator() );
@@ -104,8 +107,8 @@
         assertEquals( "jarName", mp.getAlias() );
         assertEquals( "java.lang.String", mp.getType() );
         assertEquals( "java.lang.String", mp.getImplementation() );
-        assertEquals( true, mp.isEditable() );
-        assertEquals( false, mp.isRequired() );
+        assertTrue( mp.isEditable() );
+        assertFalse( mp.isRequired() );
         assertEquals( "parameter-description", mp.getDescription() );
         assertEquals( "deprecated-parameter", mp.getDeprecated() );
         assertEquals( "${jar.finalName}", mp.getExpression() );
@@ -128,9 +131,9 @@
         md = pd.getMojos().get( 1 );
 
         assertEquals( "war", md.getGoal() );
-        assertEquals( null, md.getDependencyResolutionRequired() );
-        assertEquals( null, md.getDependencyCollectionRequired() );
-        assertEquals( true, md.isThreadSafe() );
+        assertNull( md.getDependencyResolutionRequired() );
+        assertNull( md.getDependencyCollectionRequired() );
+        assertTrue( md.isThreadSafe() );
     }
 
 }
