diff --git a/composer.json b/composer.json
index 71dcc9605c..24e405d9bd 100644
--- a/composer.json
+++ b/composer.json
@@ -50,10 +50,12 @@
     "scripts": {
         "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
         "post-autoload-dump": [
-          "Drupal\\Core\\Composer\\Composer::ensureHtaccess"
+          "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
+          "Drupal\\Core\\Composer\\Composer::upgradePHPUnit"
         ],
         "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
         "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
+        "drupal-phpunit-upgrade": "@composer upgrade phpunit/phpunit --with-dependencies",
         "phpcs": "phpcs --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --",
         "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --"
     },
diff --git a/core/composer.json b/core/composer.json
index 31bc51a0fa..c4bb384b92 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -44,7 +44,7 @@
         "jcalderonzumba/gastonjs": "^1.0.2",
         "jcalderonzumba/mink-phantomjs-driver": "^0.3.1",
         "mikey179/vfsStream": "^1.2",
-        "phpunit/phpunit": ">=4.8.35 <5",
+        "phpunit/phpunit": "^4.8.35 || ^6.1",
         "phpspec/prophecy": "^1.4",
         "symfony/css-selector": "~3.2.8",
         "symfony/phpunit-bridge": "^3.4.0@beta"
diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php
index 016f93a348..8bfc7bb8c2 100644
--- a/core/lib/Drupal/Core/Composer/Composer.php
+++ b/core/lib/Drupal/Core/Composer/Composer.php
@@ -6,6 +6,7 @@
 use Composer\Script\Event;
 use Composer\Installer\PackageEvent;
 use Composer\Semver\Constraint\Constraint;
+use PHPUnit\Runner\Version;
 
 /**
  * Provides static functions for composer script events.
@@ -143,6 +144,24 @@ public static function ensureHtaccess(Event $event) {
     }
   }
 
+  /**
+   * Fires the drupal-phpunit-upgrade script event if necessary.
+   *
+   * @param \Composer\Script\Event $event
+   */
+  public static function upgradePHPUnit(Event $event) {
+    if (class_exists('PHPUnit_Runner_Version')) {
+      $phpunit_version = \PHPUnit_Runner_Version::id();
+    }
+    if (class_exists('\PHPUnit\Runner\Version')) {
+      $phpunit_version = Version::id();
+    }
+    // @todo if we haven't determine version throw an error.
+    if (version_compare(PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION, '7.1') >= 0 && version_compare($phpunit_version, '6.0') < 0) {
+      $event->getComposer()->getEventDispatcher()->dispatchScript('drupal-phpunit-upgrade');
+    }
+  }
+
   /**
    * Remove possibly problematic test files from vendored projects.
    *
