diff --git a/microdata.info b/microdata.info
index 3de39f5..a69c491 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/fivestar/fivestar.test
diff --git a/modules/fivestar/fivestar.test b/modules/fivestar/fivestar.test
new file mode 100644
index 0000000..8128218
--- /dev/null
+++ b/modules/fivestar/fivestar.test
@@ -0,0 +1,137 @@
+<?php
+/**
+ * @file
+ * Simpletests for the Fivestar module's microdata integration.
+ */
+
+class FivestarMicrodataMarkupTestCase extends MicrodataFieldTestCase {
+  /**
+   * Sets the display information for the tests
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Microdata markup - fivestar field',
+      'description' => 'Microdata integration test for Fivestar field.',
+      'group' => 'Microdata Field Integration',
+    );
+  }
+
+  /**
+   * Implements DrupalWebTestCase::setUp().
+   */
+  function setUp() {
+    $this->fieldFormatterTypes = array(
+      'stars',
+    );
+
+    parent::setUp(array(
+      'dblog',
+      'votingapi',
+      'fivestar',
+    ));
+  }
+
+  /**
+   * 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' => 'fivestar',
+      );
+    }
+    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,
+        'widget' => array(
+          'type' => $type,
+          'settings' => array(
+            'widget' => array(
+              'fivestar_widget' => 'default',
+            ),
+          ),
+        ),
+      );
+    }
+    return $instances;
+  }
+
+  /**
+   * Implements MicrodataFieldTestCase::getMapping().
+   */
+  protected function getMapping() {
+    foreach ($this->fieldFormatterTypes as $type) {
+      $mapping[$this->entityType][$this->bundleType][$type] = array(
+        '#itemprop' => array("{$type}_aggregateRating"),
+        '#is_item' => TRUE,
+        '#itemtype' => array('http://schema.org/AggregateRating'),
+        'average_rating' => array(
+          '#itemprop' => array("{$type}_averageRating"),
+        ),
+        'rating_count' => array(
+          '#itemprop' => array("{$type}_ratingCount"),
+        ),
+      );
+    }
+    return $mapping;
+  }
+
+  /**
+   * Tests whether microdata is correctly outputted, depending on the field
+   * formatter type.
+   */
+  public function testMarkup() {
+    $rating = '40';
+    $rating_value = '2';
+    $count = '1';
+
+    $node = $this->drupalCreateNode(array('type' => $this->bundleType, 'promote' => 1));
+
+    $edit = array(
+      // Equals a rating of 2 stars.
+      'stars[und][0][rating]' => '40'
+    );
+    $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
+
+    // Get the microdata result for the page.
+    $md = $this->parseMicrodata();
+
+    // Test fields enriched with microdata.
+    foreach ($this->fieldFormatterTypes as $type) {
+      // Get the entity as a microdata item.
+      $item = $md->items[0];
+
+      // Get the microdata mapping.
+      $full_mapping = $this->getMapping();
+      $mapping = $full_mapping['node'][$this->bundleType];
+      $itemprop = $mapping[$type]['#itemprop'][0];
+      $field_data = $md->items[0]->properties[$itemprop][0];
+
+      // Test itemtype.
+      $field_itemtype = $mapping[$type]['#itemtype'][0];
+      $this->assertEqual($field_itemtype, $field_data->type[0], 'Itemtype is placed on field.');
+
+      // Test average rating value property.
+      $text_itemprop = "{$type}_averageRating";
+      $this->assertEqual($rating_value, $field_data->properties[$text_itemprop][0], "Itemprop is placed on {$type}_averageRating");
+
+      // Test voting count property.
+      $text_itemprop = "{$type}_ratingCount";
+      $this->assertEqual($count, $field_data->properties[$text_itemprop][0], "Itemprop is placed on {$type}_ratingCount");
+    }
+  }
+}
