diff --git a/lib/setuplib.php b/lib/setuplib.php
index <HASH>..<HASH> 100644
--- a/lib/setuplib.php
+++ b/lib/setuplib.php
@@ -137,14 +137,23 @@ class moodle_exception extends Exception {
 
         if (get_string_manager()->string_exists($errorcode, $module)) {
             $message = get_string($errorcode, $module, $a);
+            $haserrorstring = true;
         } else {
             $message = $module . '/' . $errorcode;
+            $haserrorstring = false;
         }
 
         if (defined('PHPUNIT_TEST') and PHPUNIT_TEST and $debuginfo) {
             $message = "$message ($debuginfo)";
         }
 
+        if (!$haserrorstring and defined('PHPUNIT_TEST') and PHPUNIT_TEST) {
+            // Append the contents of $a to $debuginfo so helpful information isn't lost.
+            // This emulates what {@link get_exception_info()} does. Unfortunately that
+            // function is not used by phpunit.
+            $message .= PHP_EOL.'$a contents: '.print_r($a, true);
+        }
+
         parent::__construct($message, 0);
     }
 }
MDL-<I> Let PHPUnit display the content of $a even if the error string is not found