diff --git a/composer.lock b/composer.lock
index 0f89f38..663fba3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4316,6 +4316,68 @@
             "description": "Symfony DomCrawler Component",
             "homepage": "https://symfony.com",
             "time": "2017-02-21T08:33:48+00:00"
+        },
+        {
+            "name": "symfony/phpunit-bridge",
+            "version": "v3.2.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/phpunit-bridge.git",
+                "reference": "9103d17dd57c512a3a027bb5628f6701464d6fef"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/9103d17dd57c512a3a027bb5628f6701464d6fef",
+                "reference": "9103d17dd57c512a3a027bb5628f6701464d6fef",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "conflict": {
+                "phpunit/phpunit": ">=6.0"
+            },
+            "suggest": {
+                "ext-zip": "Zip support is required when using bin/simple-phpunit",
+                "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
+            },
+            "bin": [
+                "bin/simple-phpunit"
+            ],
+            "type": "symfony-bridge",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.2-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Bridge\\PhpUnit\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony PHPUnit Bridge",
+            "homepage": "https://symfony.com",
+            "time": "2017-03-09T12:58:16+00:00"
         }
     ],
     "aliases": [],
diff --git a/core/composer.json b/core/composer.json
index c3600ab..176868c 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -46,7 +46,8 @@
         "mikey179/vfsStream": "~1.2",
         "phpunit/phpunit": ">=4.8.35 <5",
         "symfony/browser-kit": ">=2.8.13 <3.0",
-        "symfony/css-selector": "~2.8"
+        "symfony/css-selector": "~2.8",
+        "symfony/phpunit-bridge": "^3.2"
     },
     "replace": {
         "drupal/action": "self.version",
diff --git a/core/modules/migrate/tests/src/Unit/process/DedupeEntityTest.php b/core/modules/migrate/tests/src/Unit/process/DedupeEntityTest.php
index a5daa72..3775334 100644
--- a/core/modules/migrate/tests/src/Unit/process/DedupeEntityTest.php
+++ b/core/modules/migrate/tests/src/Unit/process/DedupeEntityTest.php
@@ -2,9 +2,6 @@
 
 namespace Drupal\Tests\migrate\Unit\process;
 
-@trigger_error('The ' . __NAMESPACE__ . '\DedupeEntityTest is deprecated in
-Drupal 8.4.0 and will be removed before Drupal 9.0.0. Instead, use ' . __NAMESPACE__ . '\MakeUniqueEntityFieldTest', E_USER_DEPRECATED);
-
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Entity\Query\QueryInterface;
@@ -14,6 +11,7 @@
 /**
  * @coversDefaultClass \Drupal\migrate\Plugin\migrate\process\DedupeEntity
  * @group migrate
+ * @group legacy
  */
 class DedupeEntityTest extends MigrateProcessTestCase {
 
diff --git a/core/modules/migrate/tests/src/Unit/process/MigrationTest.php b/core/modules/migrate/tests/src/Unit/process/MigrationTest.php
index 843d1e5..cade905 100644
--- a/core/modules/migrate/tests/src/Unit/process/MigrationTest.php
+++ b/core/modules/migrate/tests/src/Unit/process/MigrationTest.php
@@ -2,9 +2,6 @@
 
 namespace Drupal\Tests\migrate\Unit\process;
 
-@trigger_error('The ' . __NAMESPACE__ . '\MigrationTest is deprecated in
-Drupal 8.4.0 and will be removed before Drupal 9.0.0. Instead, use ' . __NAMESPACE__ . '\MigrationLookupTest', E_USER_DEPRECATED);
-
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\migrate\MigrateSkipProcessException;
 use Drupal\migrate\Plugin\MigrationInterface;
@@ -17,11 +14,9 @@
 use Prophecy\Argument;
 
 /**
- * @deprecated in Drupal 8.4.x, to be removed before Drupal 9.0.x. Use
- *   \Drupal\Tests\migrate\Unit\process\MigrationLookupTest instead.
- *
  * @coversDefaultClass \Drupal\migrate\Plugin\migrate\process\Migration
  * @group migrate
+ * @group legacy
  */
 class MigrationTest extends MigrateProcessTestCase {
 
diff --git a/core/modules/simpletest/src/Tests/UiPhpUnitOutputTest.php b/core/modules/simpletest/src/Tests/UiPhpUnitOutputTest.php
index 324bf1d..e032cef 100644
--- a/core/modules/simpletest/src/Tests/UiPhpUnitOutputTest.php
+++ b/core/modules/simpletest/src/Tests/UiPhpUnitOutputTest.php
@@ -35,9 +35,9 @@ public function testOutput() {
 
     // Check that there are <br> tags for the HTML output by
     // SimpletestUiPrinter.
-    $this->assertEqual($output[18], 'HTML output was generated<br />');
+    $this->assertEqual($output[19], 'HTML output was generated<br />');
     // Check that URLs are printed as HTML links.
-    $this->assertIdentical(strpos($output[19], '<a href="http'), 0);
+    $this->assertIdentical(strpos($output[20], '<a href="http'), 0);
   }
 
 }
diff --git a/core/modules/text/tests/src/Unit/Migrate/TextFieldTest.php b/core/modules/text/tests/src/Unit/Migrate/TextFieldTest.php
index 6d433ea..7f703b7 100644
--- a/core/modules/text/tests/src/Unit/Migrate/TextFieldTest.php
+++ b/core/modules/text/tests/src/Unit/Migrate/TextFieldTest.php
@@ -11,6 +11,7 @@
 /**
  * @coversDefaultClass \Drupal\text\Plugin\migrate\cckfield\TextField
  * @group text
+ * @group legacy
  */
 class TextFieldTest extends UnitTestCase {
 
diff --git a/core/phpunit.xml.dist b/core/phpunit.xml.dist
index ef1ae3b..c85258d 100644
--- a/core/phpunit.xml.dist
+++ b/core/phpunit.xml.dist
@@ -45,6 +45,8 @@
     </testsuite>
   </testsuites>
   <listeners>
+    <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener">
+    </listener>
     <listener class="\Drupal\Tests\Listeners\DrupalStandardsListener">
     </listener>
   </listeners>
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
index cec466b..eedbcc7 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
@@ -664,6 +664,8 @@ public function testInitializedForAliases() {
    * @covers ::isScopeActive
    *
    * @dataProvider scopeExceptionTestProvider
+   *
+   * @group legacy
    */
   public function testScopeFunctionsWithException($method, $argument) {
     $callable = [
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
index 0a5d58b..b7142e9 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
@@ -212,6 +212,8 @@ public function getParametersDataProvider() {
      * @covers ::getParameterCall
      *
      * @dataProvider getDefinitionsDataProvider
+     *
+     * @group legacy
      */
     public function testGetServiceDefinitions($services, $definition_services) {
       $this->containerDefinition['services'] = $definition_services;
@@ -485,6 +487,8 @@ protected function getServiceCall($id, $invalid_behavior = ContainerInterface::E
      * Tests that the correct InvalidArgumentException is thrown for getScope().
      *
      * @covers ::getServiceDefinition
+     *
+     * @group legacy
      */
     public function testGetServiceDefinitionWithInvalidScope() {
       $bar_definition = new Definition('\stdClass');
@@ -502,6 +506,8 @@ public function testGetServiceDefinitionWithInvalidScope() {
      * @covers ::getReferenceCall
      *
      * @dataProvider publicPrivateDataProvider
+     *
+     * @group legacy
      */
     public function testGetServiceDefinitionWithReferenceToAlias($public) {
       $bar_definition = new Definition('\stdClass');
@@ -557,6 +563,8 @@ public function publicPrivateDataProvider() {
      * getDecoratedService().
      *
      * @covers ::getServiceDefinition
+     *
+     * @group legacy
      */
     public function testGetServiceDefinitionForDecoratedService() {
       $bar_definition = new Definition('\stdClass');
diff --git a/core/tests/Drupal/Tests/Core/Assert/AssertLegacyTraitTest.php b/core/tests/Drupal/Tests/Core/Assert/AssertLegacyTraitTest.php
index d2d7b85..edd7b13 100644
--- a/core/tests/Drupal/Tests/Core/Assert/AssertLegacyTraitTest.php
+++ b/core/tests/Drupal/Tests/Core/Assert/AssertLegacyTraitTest.php
@@ -14,6 +14,7 @@
 /**
  * @coversDefaultClass \Drupal\FunctionalTests\AssertLegacyTrait
  * @group Assert
+ * @group legacy
  */
 class AssertLegacyTraitTest extends UnitTestCase {
 
diff --git a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
index b9dc671..c9bccce 100644
--- a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
@@ -261,6 +261,8 @@ public function testChainAddRemoveClasses() {
    *
    * @covers ::removeClass
    * @covers ::addClass
+   *
+   * @group legacy
    */
   public function testTwigAddRemoveClasses($template, $expected, $seed_attributes = []) {
     $loader = new \Twig_Loader_String();
diff --git a/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php b/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
index c4805bc..a872e30 100644
--- a/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
@@ -15,6 +15,7 @@
  * Tests the twig extension.
  *
  * @group Template
+ * @group legacy
  *
  * @coversDefaultClass \Drupal\Core\Template\TwigExtension
  */
@@ -73,6 +74,8 @@ public function setUp() {
    * Tests the escaping
    *
    * @dataProvider providerTestEscaping
+   *
+   * @group legacy
    */
   public function testEscaping($template, $expected) {
     $twig = new \Twig_Environment(NULL, [
@@ -123,6 +126,8 @@ public function providerTestEscaping() {
 
   /**
    * Tests the active_theme function.
+   *
+   * @group legacy
    */
   public function testActiveTheme() {
     $active_theme = $this->getMockBuilder('\Drupal\Core\Theme\ActiveTheme')
@@ -183,6 +188,8 @@ public function testActiveThemePath() {
    * Tests the escaping of objects implementing MarkupInterface.
    *
    * @covers ::escapeFilter
+   *
+   * @group legacy
    */
   public function testSafeStringEscaping() {
     $twig = new \Twig_Environment(NULL, [
@@ -267,6 +274,8 @@ public function providerTestRenderVar() {
   /**
    * @covers ::escapeFilter
    * @covers ::bubbleArgMetadata
+   *
+   * @group legacy
    */
   public function testEscapeWithGeneratedLink() {
     $twig = new \Twig_Environment(NULL, [
diff --git a/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php b/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php
index e599463..1bbb9f4 100644
--- a/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/TwigSandboxTest.php
@@ -16,6 +16,7 @@
  * Tests the twig sandbox policy.
  *
  * @group Template
+ * @group legacy
  *
  * @coversDefaultClass \Drupal\Core\Template\TwigSandboxPolicy
  */
diff --git a/core/tests/Drupal/Tests/Core/Test/PhpUnitBridgeTest.php b/core/tests/Drupal/Tests/Core/Test/PhpUnitBridgeTest.php
new file mode 100644
index 0000000..b91d0c3
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Test/PhpUnitBridgeTest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\Tests\Core\Test;
+
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * Tests Drupal's integration with Symfony PHPUnit Bridge.
+ *
+ * @group legacy
+ */
+class PhpUnitBridgeTest extends UnitTestCase {
+
+  /**
+   * @expectedDeprecation Testing Symfony PHPUnit Bridge with silenced errors
+   */
+  public function testSilencedError() {
+    @trigger_error('Testing Symfony PHPUnit Bridge with silenced errors', E_USER_DEPRECATED);
+
+    // Perform an assertion so this is not a risky test.
+    $this->assertTrue(TRUE);
+  }
+
+}
