diff --git a/core/modules/views/tests/src/Kernel/ModuleTest.php b/core/modules/views/tests/src/Kernel/ModuleTest.php
index dde00473ee508daf747916ba0bfa35e61c1ea921..6c2f70787526d504225fe38c298344a7b730044c 100644
--- a/core/modules/views/tests/src/Kernel/ModuleTest.php
+++ b/core/modules/views/tests/src/Kernel/ModuleTest.php
@@ -2,15 +2,19 @@
 
 namespace Drupal\Tests\views\Kernel;
 
+use Drupal\Component\Render\FormattableMarkup;
+use Drupal\Core\Form\FormState;
+use Drupal\views\Plugin\views\area\Broken as BrokenArea;
+use Drupal\views\Plugin\views\field\Broken as BrokenField;
+use Drupal\views\Plugin\views\filter\Broken as BrokenFilter;
+use Drupal\views\Plugin\views\filter\Standard;
+use Drupal\views\Views;
+
 /**
  * Tests basic functions from the Views module.
  *
  * @group views
  */
-use Drupal\views\Plugin\views\filter\Standard;
-use Drupal\views\Views;
-use Drupal\Component\Render\FormattableMarkup;
-
 class ModuleTest extends ViewsKernelTestBase {
 
   /**
@@ -42,14 +46,41 @@ class ModuleTest extends ViewsKernelTestBase {
    * @see \Drupal\views\Plugin\ViewsHandlerManager::getHandler()
    */
   public function testViewsGetHandler() {
-    $types = ['field', 'area', 'filter'];
-    foreach ($types as $type) {
-      $item = [
-        'table' => $this->randomMachineName(),
-        'field' => $this->randomMachineName(),
-      ];
-      $handler = $this->container->get('plugin.manager.views.' . $type)->getHandler($item);
-      $this->assertEqual('Drupal\views\Plugin\views\\' . $type . '\Broken', get_class($handler), new FormattableMarkup('Make sure that a broken handler of type: @type is created.', ['@type' => $type]));
+    $types = [
+      'field' => BrokenField::class,
+      'area' => BrokenArea::class,
+      'filter' => BrokenFilter::class,
+    ];
+    // Test non-existent tables/fields.
+    $items = [
+      [
+        'table' => 'table_invalid',
+        'field' => 'id',
+      ],
+      [
+        'table' => 'views_test_data',
+        'field' => 'field_invalid',
+      ],
+    ];
+    $form_state = new FormState();
+    $description_top = '<p>' . t('The handler for this item is broken or missing. The following details are available:') . '</p>';
+    $description_bottom = '<p>' . t('Enabling the appropriate module may solve this issue. Otherwise, check to see if there is a module update available.') . '</p>';
+    foreach ($types as $type => $class) {
+      foreach ($items as $item) {
+        $handler = $this->container->get('plugin.manager.views.' . $type)
+          ->getHandler($item);
+        $this->assertTrue($handler instanceof $class);
+        // Make sure details available at edit form.
+        $form = [];
+        $handler->buildOptionsForm($form, $form_state);
+        $this->assertEquals($description_top, $form['description']['description_top']['#markup']);
+        $this->assertEquals($description_bottom, $form['description']['description_bottom']['#markup']);
+        $details = [];
+        foreach ($item as $key => $value) {
+          $details[] = new FormattableMarkup('@key: @value', ['@key' => $key, '@value' => $value]);
+        }
+        $this->assertEquals($details, $form['description']['detail_list']['#items']);
+      }
     }
 
     $views_data = $this->viewsData();
@@ -77,61 +108,6 @@ public function testViewsGetHandler() {
     ];
     $handler = $this->container->get('plugin.manager.views.filter')->getHandler($item, 'standard');
     $this->assertInstanceOf(Standard::class, $handler);
-
-    // @todo Reinstate these tests when the debug() in views_get_handler() is
-    //   restored.
-    return;
-
-    // Test non-existent tables/fields.
-    set_error_handler([$this, 'customErrorHandler']);
-    $item = [
-      'table' => 'views_test_data',
-      'field' => 'field_invalid',
-    ];
-    $this->container->get('plugin.manager.views.field')->getHandler($item);
-    $this->assertStringContainsString(new FormattableMarkup("Missing handler: @table @field @type", ['@table' => 'views_test_data', '@field' => 'field_invalid', '@type' => 'field']), $this->lastErrorMessage, 'An invalid field name throws a debug message.');
-    unset($this->lastErrorMessage);
-
-    $item = [
-      'table' => 'table_invalid',
-      'field' => 'id',
-    ];
-    $this->container->get('plugin.manager.views.filter')->getHandler($item);
-    $this->assertStringContainsString(new FormattableMarkup("Missing handler: @table @field @type", ['@table' => 'table_invalid', '@field' => 'id', '@type' => 'filter']), $this->lastErrorMessage, 'An invalid table name throws a debug message.');
-    unset($this->lastErrorMessage);
-
-    $item = [
-      'table' => 'table_invalid',
-      'field' => 'id',
-    ];
-    $this->container->get('plugin.manager.views.filter')->getHandler($item);
-    $this->assertStringContainsString(new FormattableMarkup("Missing handler: @table @field @type", ['@table' => 'table_invalid', '@field' => 'id', '@type' => 'filter']), $this->lastErrorMessage, 'An invalid table name throws a debug message.');
-    unset($this->lastErrorMessage);
-
-    restore_error_handler();
-  }
-
-  /**
-   * Defines an error handler which is used in the test.
-   *
-   * Because this is registered in set_error_handler(), it has to be public.
-   *
-   * @param int $error_level
-   *   The level of the error raised.
-   * @param string $message
-   *   The error message.
-   * @param string $filename
-   *   The filename that the error was raised in.
-   * @param int $line
-   *   The line number the error was raised at.
-   * @param array $context
-   *   An array that points to the active symbol table at the point the error
-   *   occurred.
-   *
-   * @see set_error_handler()
-   */
-  public function customErrorHandler($error_level, $message, $filename, $line, $context) {
-    $this->lastErrorMessage = $message;
   }
 
   /**