diff --git a/core/modules/system/tests/modules/database_test/database_test.module b/core/modules/system/tests/modules/database_test/database_test.module
index cb9da23..685a7d7 100644
--- a/core/modules/system/tests/modules/database_test/database_test.module
+++ b/core/modules/system/tests/modules/database_test/database_test.module
@@ -1,6 +1,5 @@
 <?php
 
-use Drupal\Component\Utility\String;
 use Drupal\Core\Database\Query\AlterableInterface;
 use Symfony\Component\HttpFoundation\JsonResponse;
 
@@ -181,51 +180,3 @@ function database_test_tablesort_first() {
   ));
 }
 
-/**
- * Outputs a form without setting a header sort.
- *
- * @deprecated \Drupal\database_test\Form\DatabaseTestForm::testTablesortDefaultSort()
- */
-function database_test_theme_tablesort($form, &$form_state) {
-  $header = array(
-    'username' => array('data' => t('Username'), 'field' => 'u.name'),
-    'status' => array('data' => t('Status'), 'field' => 'u.status'),
-  );
-
-  $query = db_select('users', 'u');
-  $query->condition('u.uid', 0, '<>');
-
-  $count_query = clone $query;
-  $count_query->addExpression('COUNT(u.uid)');
-
-  $query = $query
-    ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
-    ->extend('Drupal\Core\Database\Query\TableSortExtender');
-  $query
-    ->fields('u', array('uid'))
-    ->limit(50)
-    ->orderByHeader($header)
-    ->setCountQuery($count_query);
-  $uids = $query
-    ->execute()
-    ->fetchCol();
-
-  $options = array();
-
-  foreach (user_load_multiple($uids) as $account) {
-    $options[$account->id()] = array(
-      'title' => array('data' => array('#title' => String::checkPlain($account->getUsername()))),
-      'username' => String::checkPlain($account->getUsername()),
-      'status' =>  $account->isActive() ? t('active') : t('blocked'),
-    );
-  }
-
-  $form['accounts'] = array(
-    '#type' => 'tableselect',
-    '#header' => $header,
-    '#options' => $options,
-    '#empty' => t('No people available.'),
-  );
-
-  return $form;
-}
diff --git a/core/modules/system/tests/modules/database_test/database_test.routing.yml b/core/modules/system/tests/modules/database_test/database_test.routing.yml
index a6ca5de..077ad89 100644
--- a/core/modules/system/tests/modules/database_test/database_test.routing.yml
+++ b/core/modules/system/tests/modules/database_test/database_test.routing.yml
@@ -36,6 +36,6 @@ database_test.tablesort_first:
 database_test.tablesort_default_sort:
   path: '/database_test/tablesort_default_sort'
   defaults:
-    _content: '\Drupal\database_test\Form\DatabaseTestForm::testTablesortDefaultSort'
+    _form: '\Drupal\database_test\Form\DatabaseTestForm'
   requirements:
     _access: 'TRUE'
diff --git a/core/modules/system/tests/modules/database_test/src/Form/DatabaseTestForm.php b/core/modules/system/tests/modules/database_test/src/Form/DatabaseTestForm.php
index 2923faf..12e7311 100644
--- a/core/modules/system/tests/modules/database_test/src/Form/DatabaseTestForm.php
+++ b/core/modules/system/tests/modules/database_test/src/Form/DatabaseTestForm.php
@@ -7,16 +7,72 @@
 
 namespace Drupal\database_test\Form;
 
+use Drupal\Component\Utility\String;
+use Drupal\Core\Form\FormBase;
+
 /**
- * Temporary form controller for database_test module.
+ * Form controller for database_test module.
  */
-class DatabaseTestForm {
+class DatabaseTestForm extends FormBase {
 
   /**
-   * @todo Remove database_test_theme_tablesort().
+   * {@inheritdoc}
    */
-  public function testTablesortDefaultSort() {
-    return \Drupal::formBuilder()->getForm('database_test_theme_tablesort');
+  public function getFormId() {
+    return 'database_test_theme_tablesort';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, array &$form_state) {
+    $header = array(
+      'username' => array('data' => t('Username'), 'field' => 'u.name'),
+      'status' => array('data' => t('Status'), 'field' => 'u.status'),
+    );
+
+    $query = db_select('users', 'u');
+    $query->condition('u.uid', 0, '<>');
+
+    $count_query = clone $query;
+    $count_query->addExpression('COUNT(u.uid)');
+
+    $query = $query
+      ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
+      ->extend('Drupal\Core\Database\Query\TableSortExtender');
+    $query
+      ->fields('u', array('uid'))
+      ->limit(50)
+      ->orderByHeader($header)
+      ->setCountQuery($count_query);
+    $uids = $query
+      ->execute()
+      ->fetchCol();
+
+    $options = array();
+
+    foreach (user_load_multiple($uids) as $account) {
+      $options[$account->id()] = array(
+        'title' => array('data' => array('#title' => String::checkPlain($account->getUsername()))),
+        'username' => String::checkPlain($account->getUsername()),
+        'status' =>  $account->isActive() ? t('active') : t('blocked'),
+      );
+    }
+
+    $form['accounts'] = array(
+      '#type' => 'tableselect',
+      '#header' => $header,
+      '#options' => $options,
+      '#empty' => t('No people available.'),
+    );
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, array &$form_state) {
   }
 
 }
