diff --git a/core/modules/system/tests/modules/deprecated_test/deprecated_test.info.yml b/core/modules/system/tests/modules/deprecated_test/deprecated_test.info.yml
new file mode 100644
index 0000000..c35168b
--- /dev/null
+++ b/core/modules/system/tests/modules/deprecated_test/deprecated_test.info.yml
@@ -0,0 +1,6 @@
+name: 'Deprecated Test'
+type: module
+description: 'Used to test that deprecated code throws @trigger_error() properly.'
+package: Testing
+version: VERSION
+core: 8.x
diff --git a/core/modules/system/tests/modules/deprecated_test/deprecated_test.module b/core/modules/system/tests/modules/deprecated_test/deprecated_test.module
new file mode 100644
index 0000000..c9cb9c9
--- /dev/null
+++ b/core/modules/system/tests/modules/deprecated_test/deprecated_test.module
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * A deprecated function.
+ *
+ * @return string
+ *   A known return value of 'known_return_value'.
+ *
+ * @deprecated in Drupal 8.4.x. Might be removed before Drupal 9.0.0. This is
+ *   the deprecation message for deprecated_test_function().
+ */
+function deprecated_test_function() {
+  @trigger_error('This is the deprecation message for deprecated_test_function().', E_USER_DEPRECATED);
+  return 'known_return_value';
+}
diff --git a/core/modules/system/tests/modules/deprecated_test/deprecated_test.routing.yml b/core/modules/system/tests/modules/deprecated_test/deprecated_test.routing.yml
new file mode 100644
index 0000000..b1a539e
--- /dev/null
+++ b/core/modules/system/tests/modules/deprecated_test/deprecated_test.routing.yml
@@ -0,0 +1,6 @@
+deprecated_test.route:
+  path: '/this-calls-a-deprecated-method'
+  defaults:
+    _controller: \Drupal\deprecated_test\DeprecatedController::deprecatedMethod
+  requirements:
+    _access: 'TRUE'
diff --git a/core/modules/system/tests/modules/deprecated_test/src/DeprecatedController.php b/core/modules/system/tests/modules/deprecated_test/src/DeprecatedController.php
new file mode 100644
index 0000000..a55e251
--- /dev/null
+++ b/core/modules/system/tests/modules/deprecated_test/src/DeprecatedController.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Drupal\deprecated_test;
+
+/**
+ * Defines a controller that calls a deprecated method.
+ */
+class DeprecatedController {
+
+  /**
+   * Controller callback.
+   *
+   * @return array
+   *   Render array.
+   */
+  public function deprecatedMethod() {
+    return [
+      '#markup' => deprecated_test_function(),
+    ];
+  }
+
+}
diff --git a/core/tests/Drupal/FunctionalTests/Core/Test/PhpUnitBridgeTest.php b/core/tests/Drupal/FunctionalTests/Core/Test/PhpUnitBridgeTest.php
new file mode 100644
index 0000000..589f6a8
--- /dev/null
+++ b/core/tests/Drupal/FunctionalTests/Core/Test/PhpUnitBridgeTest.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Drupal\FunctionalTests\Core\Test;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests Drupal's integration with Symfony PHPUnit Bridge.
+ *
+ * @group legacy
+ */
+class PhpUnitBridgeTest extends BrowserTestBase {
+
+  protected static $modules = ['deprecated_test'];
+
+  /**
+   * @expectedDeprecation This is the deprecation message for deprecated_test_function().
+   */
+  public function testSilencedError() {
+    $this->assertEquals('known_return_value', deprecated_test_function());
+  }
+
+  /**
+   * @expectedDeprecation This is the deprecation message for deprecated_test_function().
+   */
+  public function testErrorOnSiteUnderTest() {
+    $this->drupalGet(Url::fromRoute('deprecated_test.route'));
+  }
+
+}
