diff --git a/i18nviews.info b/i18nviews.info
index 5a755f1..665f654 100644
--- a/i18nviews.info
+++ b/i18nviews.info
@@ -9,6 +9,8 @@ core = 7.x
 files[] = i18nviews.inc
 ; i18n hooks
 files[] = i18nviews.i18n.inc
+; tests
+files[] = tests/i18nviews.test
 
 ; Handlers, Plugins
 files[] = includes/i18nviews_handler_argument_taxonomy_index_tid.inc
diff --git a/tests/i18nviews.test b/tests/i18nviews.test
new file mode 100644
index 0000000..19387cb
--- /dev/null
+++ b/tests/i18nviews.test
@@ -0,0 +1,103 @@
+<?php
+
+/**
+ * @file
+ * Test case for views translation
+ */
+
+/**
+ * Class for testing i18n_string and modules using these features
+ *
+ * Tests basic API functions
+ */
+
+
+class i18nViewsTestCase extends Drupali18nTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Views translation',
+      'group' => 'Internationalization',
+      'description' => 'Basic Views translation tests.',
+    );
+  }
+
+  function setUp() {
+    // We can use any of the modules that define a text group, to use it for testing
+    parent::setUp('i18n_string', 'views', 'views_ui', 'i18nviews', 'i18nviews_test');
+    parent::setUpLanguages();
+    $this->admin_user = $this->drupalCreateUser(array(
+      'access content',
+      'access all views',
+      'administer views',
+      'administer languages',
+      'administer site configuration',
+      'translate interface',
+    ));
+  }
+
+  /**
+   * Translation of basic views properties.
+   */
+  function testViewsPropertiesTranslation() {
+    $this->drupalLogin($this->admin_user);
+    $nodes = $this->createSomeContent();
+    $view_name = 'i18nviews';
+    $view_path = 'i18nviews';
+
+    // Check we can view the page and Get translation tab
+    $this->drupalGet($view_path);
+    // WTF! This doesn't work (page not found) How can I display a view from a test?
+    $this->assertResponse(200, 'The view can be displayed.');
+    $this->drupalGet('admin/structure/views');
+
+    $this->drupalGet("admin/structure/views/view/$view_name/translate");
+    foreach ($this->getEnabledLanguages() as $language) {
+      $this->assertText($language->name, "Language displayed in main views translate tab.");
+    }
+    // Translate some view properties to secondary language.
+    $display = 'default';
+    $properties = array(
+      'title' => 'Views test',
+      // 'use_more_text' => 'more',
+      //'field:node:title:label' => 'Title', 
+      //'field:node:type:label' => 'Type'
+    );
+    foreach ($properties as $key => $string) {
+      $translations[$key] = $this->randomName(strlen($string));
+      $edit["strings[views:$view_name:$display:$key]"] = $translations[$key];
+    }
+    $this->drupalPost("admin/structure/views/view/$view_name/translate/$this->secondary_language", $edit, t('Save translation'));
+    $this->assertText(t('Translations saved.'), 'Views properties have been translated.');
+    // Now check that view properties are actually displayed
+    views_invalidate_cache();
+    $this->i18nGet($this->secondary_language, $view_path);
+    foreach ($properties as $key => $text) {
+      $this->assertText($translations[$key], "Translation for '$text' has been found on the views page.");
+    }
+  }
+  
+  /**
+   * Create some content, 10 nodes.
+   */
+  function createSomeContent($number = 10) {
+    //$type = $this->createContentType();
+    $list = array();
+    for($i = 0; $i <= $number; $i++) {
+      $list[] = $this->drupalCreateNode();
+    }
+    return $list;
+  }
+  /**
+   * Enable view
+   */
+  function enableView($name) {
+    // Enable View programatically
+    $views_status = variable_get('views_defaults', array());
+    $views_status[$view_name] = FALSE;
+    variable_set('views_defaults', $views_status);
+    views_invalidate_cache();
+    menu_rebuild();    
+  }
+
+}
\ No newline at end of file
diff --git a/tests/i18nviews_test.info b/tests/i18nviews_test.info
new file mode 100644
index 0000000..e8b4ec8
--- /dev/null
+++ b/tests/i18nviews_test.info
@@ -0,0 +1,6 @@
+name = Views translation Test
+description = Test module for Views translation.
+package = Internationalization
+core = 7.x
+dependencies[] = views
+hidden = TRUE
\ No newline at end of file
diff --git a/tests/i18nviews_test.module b/tests/i18nviews_test.module
new file mode 100644
index 0000000..00f77f5
--- /dev/null
+++ b/tests/i18nviews_test.module
@@ -0,0 +1,14 @@
+<?php
+/**
+ * @file
+ * Helper module for testing i18nviews
+ */
+
+/**
+ * Implements hook_views_api().
+ */
+function i18nviews_test_views_api() {
+  return array(
+    'api' => '3.0-alpha1',
+  );
+}
\ No newline at end of file
diff --git a/tests/i18nviews_test.views_default.inc b/tests/i18nviews_test.views_default.inc
new file mode 100644
index 0000000..60f80c1
--- /dev/null
+++ b/tests/i18nviews_test.views_default.inc
@@ -0,0 +1,82 @@
+<?php
+/**
+ * @file
+ *   Test views
+ */
+
+/**
+ * Implements hook_views_default_views().
+ */
+function i18nviews_test_views_default_views() {
+$view = new view;
+$view->name = 'i18nviews';
+$view->description = '';
+$view->tag = 'default';
+$view->base_table = 'node';
+$view->human_name = 'i18nviews';
+$view->core = 7;
+$view->api_version = '3.0';
+$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+/* Display: Master */
+$handler = $view->new_display('default', 'Master', 'default');
+$handler->display->display_options['title'] = 'Views test';
+$handler->display->display_options['access']['type'] = 'perm';
+$handler->display->display_options['cache']['type'] = 'none';
+$handler->display->display_options['query']['type'] = 'views_query';
+$handler->display->display_options['query']['options']['query_comment'] = FALSE;
+$handler->display->display_options['exposed_form']['type'] = 'basic';
+$handler->display->display_options['pager']['type'] = 'full';
+$handler->display->display_options['pager']['options']['items_per_page'] = '5';
+$handler->display->display_options['style_plugin'] = 'table';
+/* Field: Content: Title */
+$handler->display->display_options['fields']['title']['id'] = 'title';
+$handler->display->display_options['fields']['title']['table'] = 'node';
+$handler->display->display_options['fields']['title']['field'] = 'title';
+$handler->display->display_options['fields']['title']['label'] = '';
+$handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
+$handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
+$handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
+$handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0;
+$handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0;
+$handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
+$handler->display->display_options['fields']['title']['alter']['trim'] = 0;
+$handler->display->display_options['fields']['title']['alter']['html'] = 0;
+$handler->display->display_options['fields']['title']['hide_empty'] = 0;
+$handler->display->display_options['fields']['title']['empty_zero'] = 0;
+$handler->display->display_options['fields']['title']['link_to_node'] = 1;
+/* Sort criterion: Content: Post date */
+$handler->display->display_options['sorts']['created']['id'] = 'created';
+$handler->display->display_options['sorts']['created']['table'] = 'node';
+$handler->display->display_options['sorts']['created']['field'] = 'created';
+$handler->display->display_options['sorts']['created']['order'] = 'DESC';
+/* Filter criterion: Content: Published */
+$handler->display->display_options['filters']['status']['id'] = 'status';
+$handler->display->display_options['filters']['status']['table'] = 'node';
+$handler->display->display_options['filters']['status']['field'] = 'status';
+$handler->display->display_options['filters']['status']['value'] = 1;
+$handler->display->display_options['filters']['status']['group'] = 0;
+$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+
+/* Display: Page */
+$handler = $view->new_display('page', 'Page', 'page');
+$handler->display->display_options['path'] = 'i18nviews';
+
+/* Display: Block */
+$handler = $view->new_display('block', 'Block', 'block');
+$handler->display->display_options['defaults']['title'] = FALSE;
+$handler->display->display_options['title'] = 'Test block';
+$handler->display->display_options['defaults']['pager'] = FALSE;
+$handler->display->display_options['pager']['type'] = 'some';
+$handler->display->display_options['pager']['options']['items_per_page'] = '5';
+$handler->display->display_options['defaults']['style_plugin'] = FALSE;
+$handler->display->display_options['style_plugin'] = 'default';
+$handler->display->display_options['defaults']['style_options'] = FALSE;
+$handler->display->display_options['defaults']['row_plugin'] = FALSE;
+$handler->display->display_options['row_plugin'] = 'fields';
+$handler->display->display_options['defaults']['row_options'] = FALSE;
+
+  $views[$view->name] = $view;
+
+  return $views;
+}
\ No newline at end of file
