diff --git a/advancedqueue.info b/advancedqueue.info
index 7697e17..ace3a37 100644
--- a/advancedqueue.info
+++ b/advancedqueue.info
@@ -9,6 +9,3 @@ files[] = advancedqueue.queue.inc
 files[] = views/advancedqueue_handler_field_title.inc
 files[] = views/advancedqueue_handler_field_status.inc
 files[] = views/advancedqueue_handler_filter_status.inc
-
-; Test
-files[] = tests/advancedqueue.test
diff --git a/tests/advancedqueue.test b/tests/advancedqueue.test
index 119d305..2cd74d3 100644
--- a/tests/advancedqueue.test
+++ b/tests/advancedqueue.test
@@ -1,6 +1,13 @@
 <?php
 
 /**
+ * @file
+ *   Advancedqueue Simpletests.
+ */
+
+require_once 'advancedqueue_test.inc';
+
+/**
  * Validate that a AdvancedQueue works as a normal queue.
  *
  * Note this class extends core's QueueTestCase, so we use its tests.
@@ -19,3 +26,67 @@ class AdvancedQueueTestCase extends QueueTestCase {
     variable_set('queue_default_class', 'AdvancedQueue');
   }
 }
+
+/**
+ * Check cron functionality.
+ */
+class AdvancedQueueCronTestCase extends DrupalWebTestCase {
+  protected $admin_user;
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Cron functionality',
+      'description' => 'Workers called by cron, and admin options.',
+      'group' => 'Advanced Queue',
+    );
+  }
+
+  function setUp() {
+    parent::setup('advancedqueue_test');
+    variable_set('queue_default_class', 'AdvancedQueue');
+
+    // Admin user for admin page check.
+    $this->admin_user = $this->drupalCreateUser(array(
+      'administer site configuration',
+    ));
+  }
+
+  /**
+   * Test cron calls workers.
+   */
+  function testCronWorker() {
+    $data = advancedqueue_test_populate_two_queues();
+    $this->cronRun();
+
+    $count = 0;
+    // Check to see that all items were sent to the worker.
+    foreach ($data as $item) {
+      $count += advancedqueue_test_count_watchdog(
+        'advancedqueue_test',
+        'advancedqueue_test_worker(@item)',
+        array('@item' => print_r($item, TRUE)),
+        WATCHDOG_INFO
+      );
+    }
+
+    $this->assertEqual($count, 8, t('All queued items sent to worker.'));
+  }
+
+  /**
+   * Test admin page options.
+   */
+  function testAdminOption() {
+    $this->drupalLogin($this->admin_user);
+
+    $this->drupalGet('admin/config/system/cron');
+    $this->assertField('edit-advancedqueue-use-cron', t('Advancedqueue use cron option.'));
+    $this->assertFieldChecked('edit-advancedqueue-use-cron', t('Advancedqueue use cron option default checked.'));
+    $edit = array(
+      'advancedqueue_use_cron' => FALSE,
+    );
+    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->assertNoFieldChecked('edit-advancedqueue-use-cron', t('Advancedqueue cron disabled successfully.'));
+
+    $this->drupalLogout();
+  }
+}
diff --git a/tests/advancedqueue_test.inc b/tests/advancedqueue_test.inc
new file mode 100644
index 0000000..5348328
--- /dev/null
+++ b/tests/advancedqueue_test.inc
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @file
+ *   Functions common for Simpletest DrupalWebTestCase.
+ *
+ *   Could be seperately included for a PhpUnit Drush test.
+ */
+
+/**
+ * Create two queues, populate with items, return data array.
+ *
+ * @return array
+ *   Data of items entered into queues.
+ */
+function advancedqueue_test_populate_two_queues() {
+  // Create two queues.
+  $queue1 = DrupalQueue::get('advancedqueue_test_1');
+  $queue1->createQueue();
+  $queue2 = DrupalQueue::get('advancedqueue_test_2');
+  $queue2->createQueue();
+
+  // Create four items in queue 1.
+  $data = array();
+  for ($i = 0; $i < 4; $i++) {
+    $data[] = $item = array(DrupalTestCase::randomName() => DrupalTestCase::randomName());
+    $queue1->createItem($item);
+  }
+
+  // Create four items in queue 2.
+  for ($i = 0; $i < 4; $i++) {
+    $data[] = $item = array(DrupalTestCase::randomName() => DrupalTestCase::randomName());
+    $queue2->createItem($item);
+  }
+
+  return $data;
+}
+
+/**
+ * Verify log entries exist.
+ *
+ * Called in the same way of the expected original watchdog() execution. Based
+ * on ModuleTestCase::assertLogMessage().
+ *
+ * @param string $type
+ *   The category to which this message belongs.
+ * @param string $message
+ *   The message to store in the log. Keep $message translatable
+ *   by not concatenating dynamic values into it! Variables in the
+ *   message should be added by using placeholder strings alongside
+ *   the variables argument to declare the value of the placeholders.
+ *   See t() for documentation on how $message and $variables interact.
+ * @param array $variables
+ *   Array of variables to replace in the message on display or
+ *   NULL if message is already translated or not possible to
+ *   translate.
+ * @param int $severity
+ *   The severity of the message, as per RFC 3164.
+ * @param string $link
+ *   A link to associate with the message.
+ */
+function advancedqueue_test_count_watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = '') {
+  $count = db_select('watchdog', 'w')
+    ->condition('type', $type)
+    ->condition('message', $message)
+    ->condition('variables', serialize($variables))
+    ->condition('severity', $severity)
+    ->condition('link', $link)
+    ->countQuery()
+    ->execute()
+    ->fetchField();
+  return $count;
+}
diff --git a/tests/advancedqueue_test.info b/tests/advancedqueue_test.info
new file mode 100644
index 0000000..c09cd96
--- /dev/null
+++ b/tests/advancedqueue_test.info
@@ -0,0 +1,9 @@
+core = 7.x
+name = Advanced Queues Test
+description = Simpletests for advancedqueue.
+package = Other
+
+dependencies[] = advancedqueue
+dependencies[] = simpletest
+
+files[] = advancedqueue.test
diff --git a/tests/advancedqueue_test.module b/tests/advancedqueue_test.module
new file mode 100644
index 0000000..1456ef7
--- /dev/null
+++ b/tests/advancedqueue_test.module
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @file
+ * Hooks and workers for tests.
+ */
+
+/**
+ * Implements hook_advanced_queue_info().
+ */
+function advancedqueue_test_advanced_queue_info() {
+  $queues['advancedqueue_test_1'] = array(
+    'worker callback' => 'advancedqueue_test_worker',
+  );
+  $queues['advancedqueue_test_2'] = array(
+    'worker callback' => 'advancedqueue_test_worker',
+  );
+  return $queues;
+}
+
+/**
+ * Worker callback.
+ */
+function advancedqueue_test_worker($item) {
+  watchdog(
+    'advancedqueue_test',
+    'advancedqueue_test_worker(@item)',
+    array('@item' => print_r($item->data, TRUE)),
+    WATCHDOG_INFO
+  );
+
+  return TRUE;
+}
