diff --git a/core/Singleton.php b/core/Singleton.php
index 7e7679c67aa63d7be9d7680bc990d1ca1afdc449..73bbd261963ecf05938eb59445180883969b373c 100644
--- a/core/Singleton.php
+++ b/core/Singleton.php
@@ -34,4 +34,13 @@ class Singleton
         $class = get_called_class();
         unset(self::$instances[$class]);
     }
+
+    /**
+     * Sets the singleton instance. For testing purposes.
+     */
+    public static function setSingletonInstance($instance)
+    {
+        $class = get_called_class();
+        self::$instances[$class] = $instance;
+    }
 }
diff --git a/tests/PHPUnit/Plugins/MobileMessagingTest.php b/tests/PHPUnit/Plugins/MobileMessagingTest.php
index be6c6bdf6dc1a7ee8525536f3f059e1f75a25ee7..f39bce51615935422dca7c3576908a5deae18689 100644
--- a/tests/PHPUnit/Plugins/MobileMessagingTest.php
+++ b/tests/PHPUnit/Plugins/MobileMessagingTest.php
@@ -213,7 +213,7 @@ class MobileMessagingTest extends DatabaseTestCase
      */
     public function testPhoneNumberIsSanitized()
     {
-        $mobileMessagingAPI = new APIMobileMessaging();
+        $mobileMessagingAPI = APIMobileMessaging::getInstance();
         $mobileMessagingAPI->setSMSAPICredential('StubbedProvider', '');
         $mobileMessagingAPI->addPhoneNumber('  6  76 93 26 47');
         $this->assertEquals('676932647', key($mobileMessagingAPI->getPhoneNumbers()));
@@ -246,21 +246,18 @@ class MobileMessagingTest extends DatabaseTestCase
              ),
         );
 
-        $stubbedAPIMobileMessaging = $this->getMock('\\Piwik\\Plugins\\MobileMessaging\\API');
+        $stubbedAPIMobileMessaging = $this->getMock('\\Piwik\\Plugins\\MobileMessaging\\API', array('sendSMS', 'getInstance'), $arguments = array(), $mockClassName = '', $callOriginalConstructor = false);
         $stubbedAPIMobileMessaging->expects($this->once())->method('sendSMS')->with(
             $this->equalTo($expectedReportContent, 0),
             $this->equalTo($expectedPhoneNumber, 1),
             $this->equalTo($expectedFrom, 2)
         );
 
-        $stubbedAPIMobileMessagingClass = new ReflectionProperty('\\Piwik\\Plugins\\MobileMessaging\\API', 'instance');
-        $stubbedAPIMobileMessagingClass->setAccessible(true);
-        $stubbedAPIMobileMessagingClass->setValue($stubbedAPIMobileMessaging);
+        \Piwik\Plugins\MobileMessaging\API::setSingletonInstance($stubbedAPIMobileMessaging);
 
         $mobileMessaging = new MobileMessaging();
         $mobileMessaging->sendReport($notificationInfo);
 
-        // restore API
-        $stubbedAPIMobileMessagingClass->setValue(null);
+        \Piwik\Plugins\MobileMessaging\API::unsetInstance();
     }
 }
diff --git a/tests/PHPUnit/Plugins/ScheduledReportsTest.php b/tests/PHPUnit/Plugins/ScheduledReportsTest.php
index 71c2b17caca39fab6bd32eb33ea572320fd9630c..f46390a1763b5a0b084f498bbeecc9de843c95f0 100644
--- a/tests/PHPUnit/Plugins/ScheduledReportsTest.php
+++ b/tests/PHPUnit/Plugins/ScheduledReportsTest.php
@@ -356,14 +356,11 @@ class ScheduledReportsTest extends DatabaseTestCase
         $report6['period'] = ScheduledTime::PERIOD_NEVER;
         $report6['deleted'] = 0;
 
-        $stubbedAPIScheduledReports = $this->getMock('\\Piwik\\Plugins\\ScheduledReports\\API');
+        $stubbedAPIScheduledReports = $this->getMock('\\Piwik\\Plugins\\ScheduledReports\\API', array('getReports', 'getInstance'), $arguments = array(), $mockClassName = '', $callOriginalConstructor = false);
         $stubbedAPIScheduledReports->expects($this->any())->method('getReports')->will($this->returnValue(
                 array($report1, $report2, $report3, $report4, $report5, $report6))
         );
-
-        $stubbedAPIScheduledReportsClass = new ReflectionProperty('\\Piwik\\Plugins\\ScheduledReports\\API', 'instance');
-        $stubbedAPIScheduledReportsClass->setAccessible(true);
-        $stubbedAPIScheduledReportsClass->setValue($stubbedAPIScheduledReports);
+        \Piwik\Plugins\ScheduledReports\API::setSingletonInstance($stubbedAPIScheduledReports);
 
         // initialize sites 1 and 2
         Site::$infoSites = array(
@@ -396,8 +393,8 @@ class ScheduledReportsTest extends DatabaseTestCase
         $pdfReportPlugin->getScheduledTasks($tasks);
         $this->assertEquals($expectedTasks, $tasks);
 
-        // restore API
-        $stubbedAPIScheduledReportsClass->setValue(null);
+        \Piwik\Plugins\ScheduledReports\API::unsetInstance();
+
     }
 
     /**
@@ -424,7 +421,7 @@ class ScheduledReportsTest extends DatabaseTestCase
         );
         $getReportSubjectAndReportTitle->setAccessible(true);
 
-        list($reportSubject, $reportTitle) = $getReportSubjectAndReportTitle->invoke(new APIScheduledReports(), $websiteName, $reports);
+        list($reportSubject, $reportTitle) = $getReportSubjectAndReportTitle->invoke( APIScheduledReports::getInstance(), $websiteName, $reports);
         $this->assertEquals($expectedReportSubject, $reportSubject);
         $this->assertEquals($expectedReportTitle, $reportTitle);
     }
diff --git a/tests/PHPUnit/proxy/index.php b/tests/PHPUnit/proxy/index.php
index 7d2d40b5506c5d74bf21af4180539c2f05a292b4..59dbab1ec53033f0f081257d53e25174a3d0d3b2 100644
--- a/tests/PHPUnit/proxy/index.php
+++ b/tests/PHPUnit/proxy/index.php
@@ -21,7 +21,7 @@ Cache::deleteTrackerCache();
 define('PIWIK_ENABLE_DISPATCH', false);
 include PIWIK_INCLUDE_PATH . '/index.php';
 
-$controller = new \Piwik\FrontController;
+$controller = \Piwik\FrontController::getInstance();
 $controller->init();
 $controller->dispatch();