diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module
index b21c64c..4a7b005 100644
--- a/core/modules/simpletest/simpletest.module
+++ b/core/modules/simpletest/simpletest.module
@@ -8,6 +8,18 @@ use Drupal\Core\Database\Database;
  */
 
 /**
+ * Implements hook_init().
+ */
+function simpletest_init() {
+  // Assuming that every module that provides tests implements
+  // hook_simpletest_info().
+  $loader = drupal_classloader();
+  foreach (module_implements('simpletest_info') as $module) {
+    $loader->registerNamespace('Drupal\\' . $module . '\\Tests', DRUPAL_ROOT . '/' . drupal_get_path('module', $module) . '/tests');
+  }
+}
+
+/**
  * Implements hook_help().
  */
 function simpletest_help($path, $arg) {
@@ -341,6 +353,18 @@ function simpletest_test_get_all() {
         }
       }
 
+      foreach (module_invoke_all('simpletest_info') as $class => $info) {
+        // If this test class requires a non-existing module, skip it.
+        if (!empty($info['dependencies'])) {
+          foreach ($info['dependencies'] as $module) {
+            if (!drupal_get_filename('module', $module)) {
+              continue 2;
+            }
+          }
+        }
+        $groups[$info['group']][$class] = $info;
+      }
+
       // Sort the groups and tests within the groups by name.
       uksort($groups, 'strnatcasecmp');
       foreach ($groups as $group => &$tests) {
diff --git a/core/modules/tracker/tracker.test b/core/modules/tracker/tests/Drupal/tracker/Tests/TrackerTest.php
similarity index 98%
rename from core/modules/tracker/tracker.test
rename to core/modules/tracker/tests/Drupal/tracker/Tests/TrackerTest.php
index c6d4a29..f0c386d 100644
--- a/core/modules/tracker/tracker.test
+++ b/core/modules/tracker/tests/Drupal/tracker/Tests/TrackerTest.php
@@ -2,9 +2,13 @@
 
 /**
  * @file
- * Tests for tracker.module.
+ * Definition of Drupal\tracker\Tests\TrackerTests
  */
 
+namespace Drupal\tracker\Tests;
+
+use DrupalWebTestCase;
+
 /**
  * Defines a base class for testing tracker.module.
  */
diff --git a/core/modules/tracker/tracker.info b/core/modules/tracker/tracker.info
index a765504..b39eb3f 100644
--- a/core/modules/tracker/tracker.info
+++ b/core/modules/tracker/tracker.info
@@ -4,4 +4,3 @@ dependencies[] = comment
 package = Core
 version = VERSION
 core = 8.x
-files[] = tracker.test
diff --git a/core/modules/tracker/tracker.module b/core/modules/tracker/tracker.module
index a5887f2..b54b67c 100644
--- a/core/modules/tracker/tracker.module
+++ b/core/modules/tracker/tracker.module
@@ -396,3 +396,15 @@ function _tracker_remove($nid, $uid = NULL, $changed = NULL) {
       ->execute();
   }
 }
+
+/**
+ * Implements hook_simpletest_info().
+ */
+function tracker_simpletest_info() {
+  $tests['Drupal\tracker\Tests\TrackerTest'] = array(
+    'name' => 'Tracker',
+    'description' => 'Create and delete nodes and check for their display in the tracker listings.',
+    'group' => 'Tracker'
+  );
+  return $tests;
+}
\ No newline at end of file
