diff --git a/microdata.info b/microdata.info
index 3de39f5..102d646 100755
--- a/microdata.info
+++ b/microdata.info
@@ -8,3 +8,4 @@ files[] = microdata.features.inc
 files[] = microdata.test
 ; Integration tests for contrib modules.
 files[] = modules/email/email.test
+files[] = modules/link/link.test
diff --git a/modules/link/link.test b/modules/link/link.test
new file mode 100644
index 0000000..1c8b614
--- /dev/null
+++ b/modules/link/link.test
@@ -0,0 +1,151 @@
+<?php
+
+/**
+ * @file
+ * Tests for Link module.
+ */
+
+
+/**
+ * Test Link module microdata placement.
+ */
+class LinkTestCase extends MicrodataFieldTestCase {
+
+  /**
+   * Sets the display information for the tests
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Microdata markup - link field',
+      'description' => 'Microdata field test for the link module.',
+      'group' => 'Microdata Field Integration',
+    );
+  }
+
+  /**
+   * Implements DrupalWebTestCase::setUp().
+   */
+  public function setUp() {
+    $this->fieldFormatterTypesUrl = array(
+      'link_default',
+      'link_url',
+      'link_plain',
+      'link_absolute',
+      'link_short',
+      'link_label',
+      'link_separate',
+    );
+
+    $this->fieldFormatterTypesTitle = array(
+      'link_default',
+      'link_title_plain',
+      'link_separate',
+      );
+
+    $this->fieldFormatterTypes = array(
+      'link_default',
+      'link_title_plain',
+      'link_url',
+      'link_plain',
+      'link_absolute',
+      'link_short',
+      'link_label',
+      'link_separate',
+    );
+
+    parent::setUp('field_ui', 'link');
+  }
+
+  /**
+   * Implements MicrodataFieldTestCase::getFields().
+   */
+  protected function getFields() {
+    // Create fields for the field collection and for the field group.
+    $fields = array();
+    foreach ($this->fieldFormatterTypes as $type) {
+      $fields[] = array(
+        'field_name' => $type,
+        'type' => 'link_field',
+      );
+    }
+    return $fields;
+  }
+
+  /**
+   * Implements MicrodataFieldTestCase::getInstances().
+   */
+  protected function getInstances() {
+    // Create instances for the field collection and for the field group.
+    $instances = array();
+    foreach ($this->fieldFormatterTypes as $type) {
+      $instances[] = array(
+        'field_name' => $type,
+        'entity_type' => $this->entityType,
+        'bundle' => $this->bundleType,
+        'display' => array(
+          'default' => array(
+            'label' => 'hidden',
+            'type' => $type,
+          ),
+        ),
+      );
+    }
+    return $instances;
+  }
+
+  /**
+   * Implements MicrodataFieldTestCase::getMapping().
+   */
+  protected function getMapping() {
+    foreach ($this->fieldFormatterTypes as $type) {
+      $mapping[$this->entityType][$this->bundleType][$type] = array(
+        'url' => array(
+          '#itemprop' => array("{$type}_url"),
+        ),
+        'title' => array(
+          '#itemprop' => array("{$type}_name"),
+        ),
+      );
+    }
+    return $mapping;
+  }
+
+  /**
+   * Tests whether microdata is correctly outputted, depending
+   * on the field formatter type.
+   */
+  public function testMarkup() {
+    $properties = array(
+      'name' => "ExampleTitle",
+      'url'=> "http://www.example.org",
+    );
+
+    $node = $this->drupalCreateNode(array('type' => $this->bundleType, 'promote' => 1));
+    foreach ($this->fieldFormatterTypes as $type) {
+      $edit["{$type}[und][0][title]"] = $properties['name'];
+      $edit["{$type}[und][0][url]"] = $properties['url'];
+    }
+    $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
+
+    // Get the microdata result for the page.
+    $md = $this->parseMicrodata();
+
+    // Get the entity as a microdata item.
+    $item = $md->items[0];
+
+    // Test fields enriched with microdata.
+    foreach ($this->fieldFormatterTypesUrl as $type) {
+      $text_itemprop = "{$type}_url";
+      $this->assertEqual($properties['url'], $item->properties[$text_itemprop][0], "Itemprop is placed on {$type}_url");
+    }
+
+    foreach ($this->fieldFormatterTypesTitle as $type) {
+      $text_itemprop = "{$type}_name";
+      $this->assertEqual($properties['name'], $item->properties[$text_itemprop][0], "Itemprop is placed on {$type}_name");
+    }
+
+    // Check for label name as title
+    $this->assertEqual('link_label', $item->properties['link_label_name'][0], "Itemprop is placed on link_label_name");
+  }
+
+}
