diff --git a/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php b/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
index d6b011e..1bed4ad 100644
--- a/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
@@ -2,21 +2,24 @@
 
 /**
  * @file
- * Definition of Drupal\views\Tests\ViewExecutableTest.
+ * Contains \Drupal\views\Tests\ViewExecutableTest.
  */
 
 namespace Drupal\views\Tests;
 
+use Symfony\Component\HttpFoundation\Response;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DefaultDisplay;
 use Drupal\views\Plugin\views\display\Page;
+use Drupal\views\Plugin\views\style\DefaultStyle;
+use Drupal\views\Plugin\views\query\Sql;
 
 /**
  * Tests the ViewExecutable class.
  *
  * @see Drupal\views\ViewExecutable
  */
-class ViewExecutableTest extends ViewTestBase {
+class ViewExecutableTest extends ViewUnitTestBase {
 
   /**
    * Views used by this test.
@@ -26,13 +29,6 @@ class ViewExecutableTest extends ViewTestBase {
   public static $testViews = array('test_destroy', 'test_executable_displays');
 
   /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('comment');
-
-  /**
    * Properties that should be stored in the configuration.
    *
    * @var array
@@ -55,7 +51,20 @@ class ViewExecutableTest extends ViewTestBase {
    * @var array
    */
   protected $executableProperties = array(
-    'build_info'
+    'storage',
+    'built',
+    'executed',
+    'args',
+    'build_info',
+    'use_ajax',
+    'result',
+    'attachment_before',
+    'attachment_after',
+    'exposed_data',
+    'exposed_input',
+    'exposed_raw_input',
+    'old_view',
+    'parent_views'
   );
 
   public static function getInfo() {
@@ -66,6 +75,12 @@ public static function getInfo() {
     );
   }
 
+  protected function setUp() {
+    parent::setUp();
+
+    $this->enableModules(array('node', 'comment', 'user', 'filter'));
+  }
+
   /**
    * Tests the initDisplay() and initHandlers() methods.
    */
@@ -92,6 +107,23 @@ public function testInitMethods() {
     // initHandlers() should create display handlers automatically as well.
     $this->assertTrue($view->display_handler instanceof DefaultDisplay, 'Make sure a reference to the current display handler is set.');
     $this->assertTrue($view->displayHandlers['default'] instanceof DefaultDisplay, 'Make sure a display handler is created for each display.');
+
+    $view_hash = spl_object_hash($view);
+    $display_hash = spl_object_hash($view->display_handler);
+
+    // Test the initStyle() method.
+    $view->initStyle();
+    $this->assertTrue($view->style_plugin instanceof DefaultStyle, 'Make sure a reference to the style plugin is set.');
+    // Test the plugin has been inited and view have references to the view and
+    // display handler.
+    $this->assertEqual(spl_object_hash($view->style_plugin->view), $view_hash);
+    $this->assertEqual(spl_object_hash($view->style_plugin->displayHandler), $display_hash);
+
+    // Test the initQuery method().
+    $view->initQuery();
+    $this->assertTrue($view->query instanceof Sql, 'Make sure a reference to the query is set');
+    $this->assertEqual(spl_object_hash($view->query->view), $view_hash);
+    $this->assertEqual(spl_object_hash($view->query->displayHandler), $display_hash);
   }
 
   /**
@@ -123,7 +155,7 @@ public function testDisplays() {
     $this->assertEqual($count, 3, format_string('Make sure all display handlers got instantiated (@count of @count_expected)', array('@count' => $count, '@count_expected' => 3)));
     // Tests the classes of the instances.
     $this->assertTrue($view->displayHandlers['default'] instanceof DefaultDisplay);
-    $this->assertTrue($view->displayHandlers['page'] instanceof Page);
+    $this->assertTrue($view->displayHandlers['page_1'] instanceof Page);
     $this->assertTrue($view->displayHandlers['page_2'] instanceof Page);
 
     // After initializing the default display is the current used display.
@@ -131,7 +163,7 @@ public function testDisplays() {
     $this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers['default']));
 
     // All handlers should have a reference to the default display.
-    $this->assertEqual(spl_object_hash($view->displayHandlers['page']->default_display), spl_object_hash($view->displayHandlers['default']));
+    $this->assertEqual(spl_object_hash($view->displayHandlers['page_1']->default_display), spl_object_hash($view->displayHandlers['default']));
     $this->assertEqual(spl_object_hash($view->displayHandlers['page_2']->default_display), spl_object_hash($view->displayHandlers['default']));
 
     // Tests Drupal\views\ViewExecutable::setDisplay().
@@ -140,19 +172,97 @@ public function testDisplays() {
     $this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers['default']));
 
     // Set two different valid displays.
-    $view->setDisplay('page');
-    $this->assertEqual($view->current_display, 'page', 'If setDisplay is called with a valid display id the appropriate display should be used.');
-    $this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers['page']));
+    $view->setDisplay('page_1');
+    $this->assertEqual($view->current_display, 'page_1', 'If setDisplay is called with a valid display id the appropriate display should be used.');
+    $this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers['page_1']));
 
     $view->setDisplay('page_2');
     $this->assertEqual($view->current_display, 'page_2', 'If setDisplay is called with a valid display id the appropriate display should be used.');
     $this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers['page_2']));
+
+    $view->setDisplay('invalid');
+    $this->assertEqual($view->current_display, 'default', 'If setDisplay is called with an invalid display id the default display should be used.');
+    $this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers['default']));
   }
 
   /**
-   * Tests the deconstructor to be sure that every kind of heavy objects are removed.
+   * Tests the setting/getting of properties.
    */
-  function testDestroy() {
+  public function testPropertyMethods() {
+    $view = views_get_view('test_executable_displays');
+
+    // Test the setUseAJAX() method.
+    $this->assertFalse($view->use_ajax);
+    $view->setUseAJAX(TRUE);
+    $this->assertTrue($view->use_ajax);
+
+    $view->setDisplay();
+    // There should be no pager set initially.
+    $this->assertNull($view->usePager());
+
+    // Add a pager, initialize, and test.
+    $view->displayHandlers['default']->overrideOption('pager', array(
+      'type' => 'full',
+      'options' => array('items_per_page' => 10),
+    ));
+    $view->initPager();
+    $this->assertTrue($view->usePager());
+
+    // Test setting and getting the offset.
+    $rand = rand();
+    $view->setOffset($rand);
+    $this->assertEqual($view->getOffset(), $rand);
+
+    // Test the getBaseTable() method.
+    $expected = array(
+      'views_test_data' => TRUE,
+      '#global' => TRUE,
+    );
+    $this->assertIdentical($view->getBaseTables(), $expected);
+
+    // Test response methods.
+    $this->assertTrue($view->getResponse() instanceof Response, 'New response object returned.');
+    $new_response = new Response();
+    $view->setResponse($new_response);
+    $this->assertIdentical(spl_object_hash($view->getResponse()), spl_object_hash($new_response), 'New response object correctly set.');
+
+    // Test the generateItemId() method.
+    $test_ids = drupal_map_assoc(array('test', 'test_1'));
+    $this->assertEqual($view->generateItemId('new', $test_ids), 'new');
+    $this->assertEqual($view->generateItemId('test', $test_ids), 'test_2');
+
+    // Test the getPath() method.
+    $path = $this->randomName();
+    $view->displayHandlers['page_1']->overrideOption('path', $path);
+    $view->setDisplay('page_1');
+    $this->assertEqual($view->getPath(), $path);
+    // Test the override_path property override.
+    $override_path = $this->randomName();
+    $view->override_path = $override_path;
+    $this->assertEqual($view->getPath(), $override_path);
+
+    // Test the getUrl method().
+    $url = $this->randomString();
+    $this->assertEqual($view->getUrl(NULL, $url), $url);
+    // Test with arguments.
+    $arg1 = $this->randomString();
+    $arg2 = rand();
+    $this->assertEqual($view->getUrl(array($arg1, $arg2), $url), "$url/$arg1/$arg2");
+    // Test the override_url property override.
+    $override_url = $this->randomString();
+    $view->override_url = $override_url;
+    $this->assertEqual($view->getUrl(NULL, $url), $override_url);
+
+    // Test the title methods.
+    $title = $this->randomString();
+    $view->setTitle($title);
+    $this->assertEqual($view->getTitle(), $title);
+  }
+
+  /**
+   * Tests the deconstructor to be sure that necessary objects are removed.
+   */
+  public function testDestroy() {
     $view = views_get_view('test_destroy');
 
     $view->preview();
@@ -161,7 +271,12 @@ function testDestroy() {
     $this->assertViewDestroy($view);
   }
 
-  function assertViewDestroy($view) {
+  /**
+   * Asserts that expected view properties have been unset by destroy().
+   *
+   * @param \Drupal\views\ViewExecutable $view
+   */
+  protected function assertViewDestroy($view) {
     $this->assertFalse(isset($view->displayHandlers['default']), 'Make sure all displays are destroyed.');
     $this->assertFalse(isset($view->displayHandlers['attachment_1']), 'Make sure all displays are destroyed.');
 
@@ -202,21 +317,36 @@ public function testViewsHandlerTypes() {
     }
   }
 
-  function testValidate() {
-    // Test a view with multiple displays.
-    // Validating a view shouldn't change the active display.
-    // @todo Create an extra validation view.
-    $view = views_get_view('test_destroy');
+  /**
+   * Tests the validation of display handlers.
+   */
+  public function testValidate() {
+    $view = views_get_view('test_executable_displays');
     $view->setDisplay('page_1');
 
-    $view->validate();
+    $validate = $view->validate();
 
+    // Validating a view shouldn't change the active display.
     $this->assertEqual('page_1', $view->current_display, "The display should be constant while validating");
 
-    // @todo Write real tests for the validation.
-    // In general the following things could be tested:
-    //   - Deleted displays shouldn't be validated
-    //   - Multiple displays are validating and the errors are merged together.
+    $count = 0;
+    foreach ($view->displayHandlers as $id => $display) {
+      $match = function($value) use ($display) {
+        return strpos($value, $display->display['display_title']) !== false;
+      };
+      $this->assertTrue(array_filter($validate, $match), format_string('Error message found for @id display', array('@id' => $id)));
+      $count++;
+    }
+
+    $this->assertEqual(count($view->displayHandlers), $count, 'Error messages from all handlers merged.');
+
+    // Test that a deleted display is not included.
+    $view->displayHandlers['default']->deleted = TRUE;
+    $validate_deleted = $view->validate();
+
+    $this->assertNotEqual(count($validate), count($validate_deleted));
+    // The first item was the default validation error originally.
+    $this->assertNotIdentical($validate[0], $validate_deleted[0], 'Master display has not been validated.');
   }
 
 }
diff --git a/core/modules/views/tests/views_test_config/test_views/views.view.test_executable_displays.yml b/core/modules/views/tests/views_test_config/test_views/views.view.test_executable_displays.yml
index 8feb580..f4645c4 100644
--- a/core/modules/views/tests/views_test_config/test_views/views.view.test_executable_displays.yml
+++ b/core/modules/views/tests/views_test_config/test_views/views.view.test_executable_displays.yml
@@ -9,10 +9,10 @@ display:
     display_title: Master
     id: default
     position: '0'
-  page:
+  page_1:
     display_plugin: page
     display_title: Page
-    id: page
+    id: page_1
     position: '1'
   page_2:
     display_plugin: page
