diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 42bab12..5961a3e 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -1365,6 +1365,11 @@ class DrupalWebTestCase extends DrupalTestCase {
     if (isset($modules[0]) && is_array($modules[0])) {
       $modules = $modules[0];
     }
+
+    // Check to make sure module files exist.
+    $missing = simpletest_dependencies($modules);
+    $this->assertTrue(count($missing)==0, t('Missing modules: %modules', array('%modules' => implode(', ', $missing))));
+
     if ($modules) {
       $success = module_enable($modules, TRUE);
       $this->assertTrue($success, t('Enabled modules: %modules', array('%modules' => implode(', ', $modules))));
@@ -3507,3 +3512,40 @@ function simpletest_verbose($message, $original_file_directory = NULL, $test_cla
   }
   return FALSE;
 }
+
+/**
+ * Checks module dependencies and returns missing modules.
+ *
+ * @param $modules
+ *   The modules to check.
+ *
+ * @return
+ *   The missing modules.
+ */
+function simpletest_dependencies($modules) {
+  $missing = array();
+  $dependencies = $modules;
+  $checked = array();
+  while (count($dependencies)>0) {
+    foreach ($dependencies as $key => $dependency) {
+      if (drupal_get_path('module', $dependency)=="") {
+        $missing[] = $dependency;
+      }
+      else {
+        $info = drupal_parse_info_file(drupal_get_path('module', $dependency) .
+          '/' . $dependency . '.info');
+        if (isset($info['dependencies'])) {
+          foreach ($info['dependencies'] as $value) {
+            if (!in_array($value, $checked) &&
+                !in_array($value, $dependencies)) {
+              $dependencies[] = $value;
+            }
+          }
+        }
+      }
+      $checked[] = $dependency;
+      unset($dependencies[$key]);
+    }
+  }
+  return $missing;
+}
