diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index b8feea4..fe00ef3 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -161,19 +161,22 @@ public function uri() {
     elseif (isset($entity_info['uri_callback'])) {
       $uri_callback = $entity_info['uri_callback'];
     }
-    else {
-      return NULL;
-    }
 
-    // Invoke the callback to get the URI. If there is no callback, return NULL.
+    // Invoke the callback to get the URI. If there is no callback, use the
+    // default URI format.
     if (isset($uri_callback) && function_exists($uri_callback)) {
       $uri = $uri_callback($this);
-      // Pass the entity data to url() so that alter functions do not need to
-      // look up this entity again.
-      $uri['options']['entity_type'] = $this->entityType;
-      $uri['options']['entity'] = $this;
-      return $uri;
     }
+    else {
+      $uri = array(
+        'path' => 'entity/' . $this->entityType . '/' . $this->id(),
+      );
+    }
+    // Pass the entity data to url() so that alter functions do not need to
+    // look up this entity again.
+    $uri['options']['entity_type'] = $this->entityType;
+    $uri['options']['entity'] = $this;
+    return $uri;
   }
 
   /**
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityUriTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityUriTest.php
new file mode 100644
index 0000000..0fbd670
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityUriTest.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Entity\EntityUriTest.
+ */
+
+namespace Drupal\system\Tests\Entity;
+
+use Drupal\simpletest\DrupalUnitTestBase;
+
+/**
+ * Tests the basic Entity API.
+ */
+class EntityUriTest extends DrupalUnitTestBase {
+
+  /**
+   * Modules to load.
+   *
+   * @var array
+   */
+  public static $modules = array('field', 'field_sql_storage', 'system', 'text');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Entity URI',
+      'description' => 'Tests default URI functionality.',
+      'group' => 'Entity API',
+    );
+  }
+
+  /**
+   * Overrides \Drupal\simpletest\DrupalUnitTestBase::setup().
+   */
+  function setUp() {
+      parent::setUp();
+
+      $this->installSchema('system', 'variable');
+      $this->installSchema('system', 'url_alias');
+      $this->installSchema('field', 'field_config');
+      $this->installSchema('field', 'field_config_instance');
+
+      $this->enableModules(array('entity_test'));
+  }
+
+  /**
+   * Test that an entity without a URI callback uses the default URI.
+   */
+  function testDefaultUri() {
+    // Create a test entity.
+    $entity = entity_create('entity_test', array('name' => 'test', 'user_id' => 1));
+    $entity->save();
+    $uri = $entity->uri();
+    $expected_path = 'entity/entity_test/' . $entity->id();
+    $this->assertEqual(url($uri['path'], $uri['options']), url($expected_path), 'Entity without URI callback returns expected URI.');
+  }
+
+}
