diff --git a/core/lib/Drupal/Core/Site/Settings.php b/core/lib/Drupal/Core/Site/Settings.php
index ee786db..bd6b2ee 100644
--- a/core/lib/Drupal/Core/Site/Settings.php
+++ b/core/lib/Drupal/Core/Site/Settings.php
@@ -29,7 +29,7 @@
    *
    * @var \Drupal\Core\Site\Settings
    */
-  private static $instance;
+  private static $instance = NULL;
 
   /**
    * Constructor.
@@ -49,8 +49,13 @@ public function __construct(array $settings) {
    * available.
    *
    * @return \Drupal\Core\Site\Settings
+   *
+   * @throws \BadMethodCallException
    */
   public static function getInstance() {
+    if (self::$instance === NULL) {
+      throw new \BadMethodCallException('Settings::$instance is not initialized yet.');
+    }
     return self::$instance;
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Site/SettingsGetInstanceTest.php b/core/tests/Drupal/Tests/Core/Site/SettingsGetInstanceTest.php
new file mode 100644
index 0000000..9e82a88
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Site/SettingsGetInstanceTest.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\Core\Site\SettingsGetInstanceTest.
+ */
+
+namespace Drupal\Tests\Core\Site;
+
+use Drupal\Core\Site\Settings;
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * @coversDefaultClass \Drupal\Core\Site\Settings
+ * @group Site
+ */
+class SettingsGetInstanceTest extends UnitTestCase {
+
+  /**
+   * @covers ::getInstance
+   * @expectedException \BadMethodCallException
+   */
+  public function testGetInstanceWithMissingInstance() {
+    Settings::getInstance();
+  }
+
+  /**
+   * @covers ::getInstance
+   */
+  public function testGetInstance() {
+    $settings = new Settings(array());
+    $singleton = $settings->getInstance();
+    $this->assertEquals($singleton, $settings);
+  }
+
+}
