diff --git a/core/Access.php b/core/Access.php
index 8e4337b7c592669a4d4b3e7e86678d1676b0b577..67ebe2ddd364ae6f401dc7531abcca8aaf472c42 100644
--- a/core/Access.php
+++ b/core/Access.php
@@ -232,6 +232,7 @@ class Access
     {
         if ($bool) {
             $this->previousLogin = self::getLogin();
+            $this->login = $this->getSuperUserLogin();
             $this->reloadAccessSuperUser();
         } else {
             $this->hasSuperUserAccess = false;
diff --git a/plugins/ExamplePlugin/tests/fixtures/SimpleFixtureTrackFewVisits.php b/plugins/ExamplePlugin/tests/fixtures/SimpleFixtureTrackFewVisits.php
index 71adfea92a464f7f5cafa9408ec01f8a52252c56..5578a13621998ef58924d50080dcbf1ef843ff29 100644
--- a/plugins/ExamplePlugin/tests/fixtures/SimpleFixtureTrackFewVisits.php
+++ b/plugins/ExamplePlugin/tests/fixtures/SimpleFixtureTrackFewVisits.php
@@ -14,7 +14,7 @@ use Piwik\Date;
  *
  * This Simple fixture adds one website and tracks one visit with couple pageviews and an ecommerce conversion
  */
-class SimpleFixtureTrackFewVisits extends \Test_Piwik_BaseFixture
+class SimpleFixtureTrackFewVisits extends \Fixture
 {
     public $dateTime = '2013-01-23 01:23:45';
     public $idSite = 1;
diff --git a/tests/PHPUnit/BenchmarkTestCase.php b/tests/PHPUnit/BenchmarkTestCase.php
index 2cd13cf675e5ea94142f6af175f566d368658231..703a51255c599dfddc261efef3bdc763dcf0340c 100755
--- a/tests/PHPUnit/BenchmarkTestCase.php
+++ b/tests/PHPUnit/BenchmarkTestCase.php
@@ -78,14 +78,14 @@ abstract class BenchmarkTestCase extends IntegrationTestCase
      */
     public static function getLocalTracker($idSite)
     {
-        $t = new Piwik_LocalTracker($idSite, Test_Piwik_BaseFixture::getTrackerUrl());
+        $t = new Piwik_LocalTracker($idSite, Fixture::getTrackerUrl());
         $t->setUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)");
         $t->setBrowserLanguage('fr');
         $t->setLocalTime('12:34:06');
         $t->setResolution(1024, 768);
         $t->setBrowserHasCookies(true);
         $t->setPlugins($flash = true, $java = true, $director = false);
-        $t->setTokenAuth(Test_Piwik_BaseFixture::getTokenAuth());
+        $t->setTokenAuth(Fixture::getTokenAuth());
         return $t;
     }
 }
@@ -102,7 +102,7 @@ class Piwik_Test_Fixture_EmptyOneSite
     public function setUp()
     {
         // add one site
-        Test_Piwik_BaseFixture::createWebsite(
+        Fixture::createWebsite(
             $this->date, $ecommerce = 1, $siteName = "Site #0", $siteUrl = "http://whatever.com/");
 
         // add two goals
diff --git a/tests/PHPUnit/Benchmarks/Fixtures/ManyThousandSitesOneVisitEach.php b/tests/PHPUnit/Benchmarks/Fixtures/ManyThousandSitesOneVisitEach.php
index 8f8fb4ef02a31407e0eaa225fb16facce8087265..444c4261881da838eb14af96ec0960f35f92c860 100644
--- a/tests/PHPUnit/Benchmarks/Fixtures/ManyThousandSitesOneVisitEach.php
+++ b/tests/PHPUnit/Benchmarks/Fixtures/ManyThousandSitesOneVisitEach.php
@@ -21,7 +21,7 @@ class Piwik_Test_Fixture_ManyThousandSitesOneVisitEach
     public function setUp()
     {
         for ($i = 0; $i != $this->siteCount; ++$i) {
-            $idSite = Test_Piwik_BaseFixture::createWebsite(
+            $idSite = Fixture::createWebsite(
                 $this->date, $ecommerce = 1, $siteName = "Site #$i", $siteUrl = "http://site$i.com/");
             
             API::getInstance()->addGoal($idSite, 'all', 'url', 'http', 'contains', false, 5);
diff --git a/tests/PHPUnit/Benchmarks/Fixtures/OneSiteThousandsOfDistinctUrlsOverMonth.php b/tests/PHPUnit/Benchmarks/Fixtures/OneSiteThousandsOfDistinctUrlsOverMonth.php
index 42b3718212eb8a6f4d571eaa5f9774ff30ec89bd..7cf01a3d80b15b327b06d65dd1419df06a9e2bac 100644
--- a/tests/PHPUnit/Benchmarks/Fixtures/OneSiteThousandsOfDistinctUrlsOverMonth.php
+++ b/tests/PHPUnit/Benchmarks/Fixtures/OneSiteThousandsOfDistinctUrlsOverMonth.php
@@ -22,7 +22,7 @@ class Piwik_Test_Fixture_OneSiteThousandsOfDistinctUrlsOverMonth
     public function setUp()
     {
         // add one site
-        Test_Piwik_BaseFixture::createWebsite(
+        Fixture::createWebsite(
             $this->date, $ecommerce = 1, $siteName = "Site #0", $siteUrl = "http://whatever.com/");
 
         // add two goals
@@ -56,7 +56,7 @@ class Piwik_Test_Fixture_OneSiteThousandsOfDistinctUrlsOverMonth
                 
                 $t->setUrl($url);
                 $t->setUrlReferrer($referrerUrl);
-                Test_Piwik_BaseFixture::checkResponse($t->doTrackPageView($title));
+                Fixture::checkResponse($t->doTrackPageView($title));
                 ++$actionNum;
             }
         }
diff --git a/tests/PHPUnit/Benchmarks/Fixtures/OneSiteTwelveThousandVisitsOneYear.php b/tests/PHPUnit/Benchmarks/Fixtures/OneSiteTwelveThousandVisitsOneYear.php
index 1d7ea0462bfaddc6e6d9b9d28f380764de92767d..6646db1d4afb88c08f47dc15fd780b752e8f969d 100755
--- a/tests/PHPUnit/Benchmarks/Fixtures/OneSiteTwelveThousandVisitsOneYear.php
+++ b/tests/PHPUnit/Benchmarks/Fixtures/OneSiteTwelveThousandVisitsOneYear.php
@@ -22,7 +22,7 @@ class Piwik_Test_Fixture_OneSiteTwelveThousandVisitsOneYear
     public function setUp()
     {
         // add one site
-        Test_Piwik_BaseFixture::createWebsite(
+        Fixture::createWebsite(
             $this->date, $ecommerce = 1, $siteName = "Site #0", $siteUrl = "http://whatever.com/");
 
         // add two goals
diff --git a/tests/PHPUnit/Benchmarks/Fixtures/SqlDump.php b/tests/PHPUnit/Benchmarks/Fixtures/SqlDump.php
index 3bba39cc861da34d22c10aacb761a65e61de1248..9c6c201548ec6dc26b82b62b6e4886c0171d9468 100755
--- a/tests/PHPUnit/Benchmarks/Fixtures/SqlDump.php
+++ b/tests/PHPUnit/Benchmarks/Fixtures/SqlDump.php
@@ -13,7 +13,7 @@ use Piwik\DbHelper;
 /**
  * Reusable fixture. Loads a SQL dump into the DB.
  */
-class Piwik_Test_Fixture_SqlDump
+class Piwik_Test_Fixture_SqlDump extends Fixture
 {
     public $date = '2012-09-03';
     public $dateTime = '2012-09-03';
@@ -59,10 +59,9 @@ class Piwik_Test_Fixture_SqlDump
         // load the data into the correct database
         $user = Config::getInstance()->database['username'];
         $password = Config::getInstance()->database['password'];
-        $dbName = Config::getInstance()->database['dbname'];
         Config::getInstance()->database['tables_prefix'] = $this->tablesPrefix;
 
-        $cmd = "mysql -u \"$user\" \"--password=$password\" $dbName < \"" . $deflatedDumpPath . "\" 2>&1";
+        $cmd = "mysql -u \"$user\" \"--password=$password\" {$this->dbName} < \"" . $deflatedDumpPath . "\" 2>&1";
         exec($cmd, $output, $return);
         if ($return !== 0) {
             throw new Exception("Failed to load sql dump: " . implode("\n", $output));
@@ -71,4 +70,9 @@ class Piwik_Test_Fixture_SqlDump
         // make sure archiving will be called
         Rules::setBrowserTriggerArchiving(true);
     }
+
+    public function tearDown()
+    {
+        // empty
+    }
 }
\ No newline at end of file
diff --git a/tests/PHPUnit/Benchmarks/Fixtures/ThousandSitesTwelveVisitsEachOneDay.php b/tests/PHPUnit/Benchmarks/Fixtures/ThousandSitesTwelveVisitsEachOneDay.php
index 6f4c9c35b9f28f0ef21c8fe628f48c804dd98760..cb9c069936c4b51be9de5455f5dc146fb7d058d3 100755
--- a/tests/PHPUnit/Benchmarks/Fixtures/ThousandSitesTwelveVisitsEachOneDay.php
+++ b/tests/PHPUnit/Benchmarks/Fixtures/ThousandSitesTwelveVisitsEachOneDay.php
@@ -24,7 +24,7 @@ class Piwik_Test_Fixture_ThousandSitesTwelveVisitsEachOneDay
         // add one thousand sites
         $allIdSites = array();
         for ($i = 0; $i < 1000; ++$i) {
-            $allIdSites[] = Test_Piwik_BaseFixture::createWebsite($this->date, $ecommerce = 1, $siteName = "Site #$i");
+            $allIdSites[] = Fixture::createWebsite($this->date, $ecommerce = 1, $siteName = "Site #$i");
         }
 
         // add goals to 500 sites
diff --git a/tests/PHPUnit/Core/JsProxyTest.php b/tests/PHPUnit/Core/JsProxyTest.php
index d6b2566b8d9bd30505819ffdb8b1910a1e928682..2f2dcb9b9c83b06db0e1b3e6ecc5e86dfa7d9b14 100644
--- a/tests/PHPUnit/Core/JsProxyTest.php
+++ b/tests/PHPUnit/Core/JsProxyTest.php
@@ -49,6 +49,6 @@ class Test_Piwik_JsProxy extends PHPUnit_Framework_TestCase
      */
     private function getStaticSrvUrl()
     {
-        return Test_Piwik_BaseFixture::getRootUrl();
+        return Fixture::getRootUrl();
     }
 }
diff --git a/tests/PHPUnit/Core/ServeStaticFileTest.php b/tests/PHPUnit/Core/ServeStaticFileTest.php
index d97fa4a6cfe62a0f7ab7cfe28a1a13ad133972a3..b3536b7aa3dfdd35c193311e409eca2bfd369695 100644
--- a/tests/PHPUnit/Core/ServeStaticFileTest.php
+++ b/tests/PHPUnit/Core/ServeStaticFileTest.php
@@ -393,7 +393,7 @@ class Test_Piwik_ServeStaticFile extends PHPUnit_Framework_TestCase
      */
     private function getStaticSrvUrl()
     {
-        $url = Test_Piwik_BaseFixture::getRootUrl();
+        $url = Fixture::getRootUrl();
         $url .= '/tests/resources/';
 
         return $url . "staticFileServer.php?" . FILE_MODE_REQUEST_VAR . "=" . STATIC_SERVER_MODE .
diff --git a/tests/PHPUnit/DatabaseTestCase.php b/tests/PHPUnit/DatabaseTestCase.php
index 1c0968539c2098018f39f4dda80181100c80d011..b9d4bcaa41658fffc8222a714ccab4f037b16a51 100644
--- a/tests/PHPUnit/DatabaseTestCase.php
+++ b/tests/PHPUnit/DatabaseTestCase.php
@@ -14,6 +14,7 @@ use Piwik\Option;
 use Piwik\Plugins\ScheduledReports\API;
 use Piwik\Site;
 use Piwik\Tracker\Cache;
+use Piwik\Piwik;
 
 /**
  * Tests extending DatabaseTestCase are much slower to run: the setUp will
@@ -25,6 +26,7 @@ use Piwik\Tracker\Cache;
  */
 class DatabaseTestCase extends PHPUnit_Framework_TestCase
 {
+    protected $fixture = null;
 
     /**
      * Setup the database and create the base tables for all tests
@@ -32,35 +34,11 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
     public function setUp()
     {
         parent::setUp();
-        try {
-            Config::getInstance()->setTestEnvironment();
 
-            $dbConfig = Config::getInstance()->database;
-            $dbName = $dbConfig['dbname'];
-            $dbConfig['dbname'] = null;
-
-            Db::createDatabaseObject($dbConfig);
-
-            DbHelper::dropDatabase();
-            DbHelper::createDatabase($dbName);
-            DbHelper::disconnectDatabase();
-
-            Db::createDatabaseObject();
-            DbHelper::createTables();
-
-//            \Piwik\Manager::getInstance()->loadPlugins(array());
-            IntegrationTestCase::loadAllPlugins();
-
-        } catch (Exception $e) {
-            $this->fail("TEST INITIALIZATION FAILED: " . $e->getMessage());
-        }
-
-        include "DataFiles/SearchEngines.php";
-        include "DataFiles/Socials.php";
-        include "DataFiles/Languages.php";
-        include "DataFiles/Countries.php";
-        include "DataFiles/Currencies.php";
-        include "DataFiles/LanguageToCountry.php";
+        $this->fixture = new Fixture();
+        $this->fixture->loadTranslations = false;
+        $this->fixture->createSuperUser = false;
+        $this->fixture->setUpEnvironment();
     }
 
     /**
@@ -69,16 +47,6 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
     public function tearDown()
     {
         parent::tearDown();
-        IntegrationTestCase::unloadAllPlugins();
-        DbHelper::dropDatabase();
-        Manager::getInstance()->deleteAll();
-        Option::clearCache();
-        API::$cache = array();
-        Site::clearCache();
-        Cache::deleteTrackerCache();
-        Config::getInstance()->clear();
-        ArchiveTableCreator::clear();
-        \Piwik\Registry::unsetInstance();
+        $this->fixture->tearDownEnvironment();
     }
-
 }
diff --git a/tests/PHPUnit/BaseFixture.php b/tests/PHPUnit/Fixture.php
similarity index 72%
rename from tests/PHPUnit/BaseFixture.php
rename to tests/PHPUnit/Fixture.php
index 18d0d9bfb1959f02bc25e5846343fa7d5c7b9ffc..54e054587b112e87d22d8fa9f72c86dfae4b4dd4 100644
--- a/tests/PHPUnit/BaseFixture.php
+++ b/tests/PHPUnit/Fixture.php
@@ -16,9 +16,18 @@ use Piwik\Plugins\ScheduledReports\ScheduledReports;
 use Piwik\Plugins\SitesManager\API as APISitesManager;
 use Piwik\Plugins\UserCountry\LocationProvider;
 use Piwik\Plugins\UsersManager\API as APIUsersManager;
+use Piwik\Plugins\LanguagesManager\API as APILanguageManager;
 use Piwik\ReportRenderer;
 use Piwik\Site;
 use Piwik\Url;
+use Piwik\Log;
+use Piwik\DbHelper;
+use Piwik\Piwik;
+use Piwik\Tracker\Cache;
+use Piwik\Translate;
+use Piwik\Option;
+use Piwik\DataTable\Manager as DataTableManager;
+use Piwik\DataAccess\ArchiveTableCreator;
 
 /**
  * Base type for all integration test fixtures. Integration test fixtures
@@ -34,18 +43,159 @@ use Piwik\Url;
  * Related TODO: we should try and reduce the amount of existing fixtures by
  *                merging some together.
  */
-abstract class Test_Piwik_BaseFixture extends PHPUnit_Framework_Assert
+// TODO: rename to Fixture
+class Fixture extends PHPUnit_Framework_Assert
 {
     const IMAGES_GENERATED_ONLY_FOR_OS = 'linux';
     const IMAGES_GENERATED_FOR_PHP = '5.5';
     const IMAGES_GENERATED_FOR_GD = '2.1.1';
     const DEFAULT_SITE_NAME = 'Piwik test';
 
+    const ADMIN_USER_LOGIN = 'admin';
+    const ADMIN_USER_PASSWORD = '098f6bcd4621d373cade4e832627b4f6';
+
+    public $dbName = false;
+    public $createEmptyDatabase = true;
+    public $createConfig = true;
+    public $dropDatabaseInTearDown = true;
+    public $loadTranslations = true;
+    public $createSuperUser = true;
+
     /** Adds data to Piwik. Creates sites, tracks visits, imports log files, etc. */
-    public abstract function setUp();
+    public function setUp()
+    {
+        // empty
+    }
 
     /** Does any clean up. Most of the time there will be no need to clean up. */
-    public abstract function tearDown();
+    public function tearDown()
+    {
+        // empty
+    }
+
+    public function setUpEnvironment()
+    {
+        try {
+            \Piwik\SettingsPiwik::$piwikUrlCache = '';
+
+            if ($this->createConfig) {
+                Config::getInstance()->setTestEnvironment();
+            }
+
+            if ($this->dbName === false) { // must be after test config is created
+                $this->dbName = Config::getInstance()->database['dbname'];
+            }
+
+            static::connectWithoutDatabase();
+            if ($this->createEmptyDatabase) {
+                DbHelper::dropDatabase();
+            }
+            DbHelper::createDatabase($this->dbName);
+            DbHelper::disconnectDatabase();
+
+            // reconnect once we're sure the database exists
+            Config::getInstance()->database['dbname'] = $this->dbName;
+            Db::createDatabaseObject();
+
+            DbHelper::createTables();
+
+            \Piwik\Plugin\Manager::getInstance()->loadPlugins(array());
+        } catch (Exception $e) {
+            static::fail("TEST INITIALIZATION FAILED: " . $e->getMessage() . "\n" . $e->getTraceAsString());
+        }
+
+        include "DataFiles/SearchEngines.php";
+        include "DataFiles/Socials.php";
+        include "DataFiles/Languages.php";
+        include "DataFiles/Countries.php";
+        include "DataFiles/Currencies.php";
+        include "DataFiles/LanguageToCountry.php";
+        include "DataFiles/Providers.php";
+        
+        static::createAccessInstance();
+
+        // We need to be SU to create websites for tests
+        Piwik::setUserHasSuperUserAccess();
+
+        Cache::deleteTrackerCache();
+
+        static::loadAllPlugins();
+
+        $_GET = $_REQUEST = array();
+        $_SERVER['HTTP_REFERER'] = '';
+
+        // Make sure translations are loaded to check messages in English
+        if ($this->loadTranslations) {
+            Translate::reloadLanguage('en');
+            APILanguageManager::getInstance()->setLanguageForUser('superUserLogin', 'en');
+        }
+        
+        FakeAccess::$superUserLogin = 'superUserLogin';
+        
+        \Piwik\SettingsPiwik::$cachedKnownSegmentsToArchive = null;
+        \Piwik\CacheFile::$invalidateOpCacheBeforeRead = true;
+
+        \Piwik\Plugins\PrivacyManager\IPAnonymizer::deactivate();
+        \Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker::deactivate();
+
+        if ($this->createSuperUser) {
+            self::createSuperUser();
+        }
+    }
+
+    public function tearDownEnvironment()
+    {
+        \Piwik\SettingsPiwik::$piwikUrlCache = null;
+        self::unloadAllPlugins();
+
+        if ($this->dropDatabaseInTearDown) {
+            DbHelper::dropDatabase();
+        }
+
+        DataTableManager::getInstance()->deleteAll();
+        Option::clearCache();
+        Site::clearCache();
+        Cache::deleteTrackerCache();
+        Config::getInstance()->clear();
+        ArchiveTableCreator::clear();
+        \Piwik\Plugins\ScheduledReports\API::$cache = array();
+        \Piwik\Registry::unsetInstance();
+
+        $_GET = $_REQUEST = array();
+        Translate::unloadEnglishTranslation();
+    }
+
+    public static function loadAllPlugins()
+    {
+        $plugins = \Piwik\Plugin\Manager::$pluginsToLoadForTests;
+        $pluginsManager = \Piwik\Plugin\Manager::getInstance();
+
+        // Load all plugins
+        $pluginsManager->loadPlugins($plugins);
+
+        // Install plugins
+        $messages = $pluginsManager->installLoadedPlugins();
+        Log::info("Plugin loading messages: %s", implode(" --- ", $messages));
+
+        // Activate them
+        foreach($plugins as $name) {
+            if (!$pluginsManager->isPluginActivated($name)) {
+                $pluginsManager->activatePlugin($name);
+            }
+        }
+    }
+
+    public static function unloadAllPlugins()
+    {
+        try {
+            $plugins = \Piwik\Plugin\Manager::getInstance()->getLoadedPlugins();
+            foreach ($plugins AS $plugin) {
+                $plugin->uninstall();
+            }
+            \Piwik\Plugin\Manager::getInstance()->unloadPlugins();
+        } catch (Exception $e) {
+        }
+    }
 
     /**
      * Creates a website, then sets its creation date to a day earlier than specified dateTime
@@ -216,17 +366,14 @@ abstract class Test_Piwik_BaseFixture extends PHPUnit_Framework_Assert
      */
     public static function getTokenAuth()
     {
-        $user = self::createSuperUser();
-
-        return $user['token_auth'];
+        return APIUsersManager::getInstance()->getTokenAuth(self::ADMIN_USER_LOGIN, self::ADMIN_USER_PASSWORD);
     }
 
     public static function createSuperUser()
     {
-        $login = 'admin';
-        $password = '098f6bcd4621d373cade4e832627b4f6';
-
-        $token = APIUsersManager::getInstance()->getTokenAuth($login, $password);
+        $login = self::ADMIN_USER_LOGIN;
+        $password = self::ADMIN_USER_PASSWORD;
+        $token = self::getTokenAuth();
 
         $model = new \Piwik\Plugins\UsersManager\Model();
         $user  = $model->getUserByTokenAuth($token);
@@ -386,8 +533,9 @@ abstract class Test_Piwik_BaseFixture extends PHPUnit_Framework_Assert
         // unzip the dump
         exec("gunzip -c \"" . $outfileName . "\" > \"$deflatedOut\"", $output, $return);
         if ($return !== 0) {
-            \Piwik\Log::info("gunzip failed with file that has following contents:");
-            \Piwik\Log::info(file_get_contents($outfile));
+            Log::info("gunzip failed with file that has following contents:");
+            Log::info(file_get_contents($outfile));
+
             throw new Exception("gunzip failed($return): " . implode("\n", $output));
         }
     }
@@ -431,4 +579,29 @@ abstract class Test_Piwik_BaseFixture extends PHPUnit_Framework_Assert
     {
         return Db::fetchOne("SELECT COUNT(*) FROM " . Common::prefixTable('goal') . " WHERE idgoal = ? AND idsite = ?", array($idGoal, $idSite)) != 0;
     }
+
+    
+    /**
+     * Connects to MySQL w/o specifying a database.
+     */
+    public static function connectWithoutDatabase()
+    {
+        $dbConfig = Config::getInstance()->database;
+        $oldDbName = $dbConfig['dbname'];
+        $dbConfig['dbname'] = null;
+
+        Db::createDatabaseObject($dbConfig);
+
+        $dbConfig['dbname'] = $oldDbName;
+    }
+
+    /**
+     * Sets up access instance.
+     */
+    public static function createAccessInstance()
+    {
+        Access::setSingletonInstance(null);
+        Access::getInstance();
+        Piwik::postEvent('Request.initAuthenticationObject');
+    }
 }
\ No newline at end of file
diff --git a/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php b/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php
index 189a5ce1d377e4b50d4e30c712eefa1bff03370d..4136dc8de924af19d7c659afa131fe377446b3a6 100644
--- a/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php
+++ b/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php
@@ -11,7 +11,7 @@ use Piwik\Tracker\Visit;
 /**
  * Adds one site and tracks a couple visits using a custom visitor ID.
  */
-class Test_Piwik_Fixture_FewVisitsWithSetVisitorId extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_FewVisitsWithSetVisitorId extends Fixture
 {
     public $idSite = 1;
     public $dateTime = '2010-03-06 11:22:33';
diff --git a/tests/PHPUnit/Fixtures/InvalidVisits.php b/tests/PHPUnit/Fixtures/InvalidVisits.php
index 14aafc79114c203dbf26e75f5218d671e297d05a..0fe5b81d74973989f4b9c7d308044a6643d01d6e 100644
--- a/tests/PHPUnit/Fixtures/InvalidVisits.php
+++ b/tests/PHPUnit/Fixtures/InvalidVisits.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\SitesManager\API;
  * Adds one site and sends several invalid tracking requests. The result should be
  * one website with no visits.
  */
-class Test_Piwik_Fixture_InvalidVisits extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_InvalidVisits extends Fixture
 {
     public $idSite = 1;
     public $dateTime = '2009-01-04 00:11:42';
diff --git a/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php b/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php
index 1f9fc232b7b62a5ebae52192ba02910f741de5d4..1bed83aa160ae8f2a1165d6b2c7e62f1bf1e3ff9 100644
--- a/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php
+++ b/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php
@@ -14,7 +14,7 @@ use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
 /**
  * Imports visits from several log files using the python log importer.
  */
-class Test_Piwik_Fixture_ManySitesImportedLogs extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_ManySitesImportedLogs extends Fixture
 {
     public $dateTime = '2012-08-09 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php b/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
index 524c92bdd1c0726674e544aab57f76d20c5794b9..928d8ce3903256680e8e3bbbf98b87ba331bcef5 100644
--- a/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
+++ b/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
@@ -17,7 +17,7 @@ require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/MockLocationProvider.php';
  * Adds one new website and tracks 35 visits from 18 visitors with geolocation using
  * free GeoIP databases. The GeoIP databases are downloaded if they do not exist already.
  */
-class Test_Piwik_Fixture_ManyVisitsWithGeoIP extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_ManyVisitsWithGeoIP extends Fixture
 {
     const GEOIP_IMPL_TO_TEST = 'geoip_php';
 
diff --git a/tests/PHPUnit/Fixtures/ManyVisitsWithMockLocationProvider.php b/tests/PHPUnit/Fixtures/ManyVisitsWithMockLocationProvider.php
index 9a4a228f47adb551c3d89ad0ec2d9584fbb19481..eacb8fdc6d84bb52f4e40e2b3eaa50f5c12df15b 100644
--- a/tests/PHPUnit/Fixtures/ManyVisitsWithMockLocationProvider.php
+++ b/tests/PHPUnit/Fixtures/ManyVisitsWithMockLocationProvider.php
@@ -14,7 +14,7 @@ require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/MockLocationProvider.php';
 /**
  * Adds one site and tracks 60 visits (15 visitors, one action per visit).
  */
-class Test_Piwik_Fixture_ManyVisitsWithMockLocationProvider extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_ManyVisitsWithMockLocationProvider extends Fixture
 {
     public $idSite = 1;
     public $dateTime = '2010-01-03 01:22:33';
diff --git a/tests/PHPUnit/Fixtures/ManyVisitsWithSubDirReferrersAndCustomVars.php b/tests/PHPUnit/Fixtures/ManyVisitsWithSubDirReferrersAndCustomVars.php
index f933df190dbe5281e97511f4b6d2c220a12e3028..97557b2dcaf778a45b950cdcbd03d3caa85f2b14 100644
--- a/tests/PHPUnit/Fixtures/ManyVisitsWithSubDirReferrersAndCustomVars.php
+++ b/tests/PHPUnit/Fixtures/ManyVisitsWithSubDirReferrersAndCustomVars.php
@@ -12,7 +12,7 @@ use Piwik\Date;
  * Adds one site and tracks 13 visits all with custom variables and referrer URLs
  * w/ sub-dirs (ie, /path/to/page/has/many/dirs.htm).
  */
-class Test_Piwik_Fixture_ManyVisitsWithSubDirReferrersAndCustomVars extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_ManyVisitsWithSubDirReferrersAndCustomVars extends Fixture
 {
     public $dateTime = '2010-03-05 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/OmniFixture.php b/tests/PHPUnit/Fixtures/OmniFixture.php
index e3c33b3db36a5792a7791c688f6e612dada6c197..0de85898310f28532ae56b4e50aff8d566b52e1c 100644
--- a/tests/PHPUnit/Fixtures/OmniFixture.php
+++ b/tests/PHPUnit/Fixtures/OmniFixture.php
@@ -13,7 +13,7 @@ use Piwik\Tracker\Visit;
  * This fixture is the combination of every other fixture defined by Piwik. Should be used
  * with year periods.
  */
-class Test_Piwik_Fixture_OmniFixture extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_OmniFixture extends Fixture
 {
     public $month = '2012-01';
     public $idSite = 'all';
@@ -35,7 +35,7 @@ class Test_Piwik_Fixture_OmniFixture extends Test_Piwik_BaseFixture
 
         $classes = get_declared_classes();
         foreach ($classes as $className) {
-            if (is_subclass_of($className, 'Test_Piwik_BaseFixture')
+            if (is_subclass_of($className, 'Fixture')
                 && $className != __CLASS__
             ) {
                 $fixture = new $className();
diff --git a/tests/PHPUnit/Fixtures/OneVisitSeveralPageViews.php b/tests/PHPUnit/Fixtures/OneVisitSeveralPageViews.php
index f4268ee911e14d02153d80f17b15935ff5115f55..782813f7921daa1b2382bcb52d0df7994236f923 100644
--- a/tests/PHPUnit/Fixtures/OneVisitSeveralPageViews.php
+++ b/tests/PHPUnit/Fixtures/OneVisitSeveralPageViews.php
@@ -10,7 +10,7 @@ use Piwik\Date;
 /**
  * Adds one site and tracks one visit with several pageviews.
  */
-class Test_Piwik_Fixture_OneVisitSeveralPageViews extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_OneVisitSeveralPageViews extends Fixture
 {
     public $dateTime = '2010-03-06 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/OneVisitWithAbnormalPageviewUrls.php b/tests/PHPUnit/Fixtures/OneVisitWithAbnormalPageviewUrls.php
index ab3fe5278a6dfc594b193843b2f2c439da9d0e81..6e7934c650a1c7de2263bf90a3b453d3148adb94 100644
--- a/tests/PHPUnit/Fixtures/OneVisitWithAbnormalPageviewUrls.php
+++ b/tests/PHPUnit/Fixtures/OneVisitWithAbnormalPageviewUrls.php
@@ -11,7 +11,7 @@ use Piwik\Date;
  * Adds one site and tracks one visit w/ pageview URLs that are not normalized.
  * These URLs use different protocols and a mix of lowercase & uppercase letters.
  */
-class Test_Piwik_Fixture_OneVisitWithAbnormalPageviewUrls extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_OneVisitWithAbnormalPageviewUrls extends Fixture
 {
     public $dateTime = '2010-03-06 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php b/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php
index 73ed360287c699d4cc3a9c7319fb821cff20f13b..b8d5756a7e545f53765e18343504ecd338627abb 100644
--- a/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php
+++ b/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\SitesManager\API as APISitesManager;
 /**
  * This fixture adds one website and tracks two visits by one visitor.
  */
-class Test_Piwik_Fixture_OneVisitorTwoVisits extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_OneVisitorTwoVisits extends Fixture
 {
     public $idSite = 1;
     public $idSiteEmptyBis;
diff --git a/tests/PHPUnit/Fixtures/SomeVisitsAllConversions.php b/tests/PHPUnit/Fixtures/SomeVisitsAllConversions.php
index 6fef9443d582bd7e5a483ddb184e4da501c23723..508f0aee1c3e9086323c2c8bd347f6c2e27e579f 100644
--- a/tests/PHPUnit/Fixtures/SomeVisitsAllConversions.php
+++ b/tests/PHPUnit/Fixtures/SomeVisitsAllConversions.php
@@ -11,7 +11,7 @@ use Piwik\Plugins\Goals\API;
 /**
  * Adds one site and tracks a couple conversions.
  */
-class Piwik_Test_Fixture_SomeVisitsAllConversions extends Test_Piwik_BaseFixture
+class Piwik_Test_Fixture_SomeVisitsAllConversions extends Fixture
 {
     public $dateTime = '2009-01-04 00:11:42';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/SomeVisitsCustomVariablesCampaignsNotHeuristics.php b/tests/PHPUnit/Fixtures/SomeVisitsCustomVariablesCampaignsNotHeuristics.php
index d25506ba22bdcbdfe26f66ec572790b715fa7f89..def3ceb65d10359c46054dff60e914922cd7c9d3 100644
--- a/tests/PHPUnit/Fixtures/SomeVisitsCustomVariablesCampaignsNotHeuristics.php
+++ b/tests/PHPUnit/Fixtures/SomeVisitsCustomVariablesCampaignsNotHeuristics.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\Goals\API;
  * Add one site and track many visits with custom variables & campaign IDs and
  * use visit ID instead of heuristics.
  */
-class Test_Piwik_Fixture_SomeVisitsCustomVariablesCampaignsNotHeuristics extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_SomeVisitsCustomVariablesCampaignsNotHeuristics extends Fixture
 {
     public $dateTime = '2009-01-04 00:11:42';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
index 68f09c06e002970a1a1a9c20c10ca71c07a5d46d..29620dd0416bf9c7f750b04d6218ea2992d18591 100644
--- a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
+++ b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
@@ -11,7 +11,7 @@ use Piwik\Date;
  * Adds one site and tracks a couple visits with many pageviews. The
  * pageviews are designed to have many transitions between pages.
  */
-class Test_Piwik_Fixture_SomeVisitsManyPageviewsWithTransitions extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_SomeVisitsManyPageviewsWithTransitions extends Fixture
 {
     public $dateTime = '2010-03-06 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/SomeVisitsWithLongUrls.php b/tests/PHPUnit/Fixtures/SomeVisitsWithLongUrls.php
index 0284ff05ea02c63dfc9c73c2b03e13f88faddc82..80f950b586f90a0ee05c87b51a3995ba73160a54 100644
--- a/tests/PHPUnit/Fixtures/SomeVisitsWithLongUrls.php
+++ b/tests/PHPUnit/Fixtures/SomeVisitsWithLongUrls.php
@@ -11,7 +11,7 @@ use Piwik\Date;
  * Adds one site and tracks 7 visits w/ some long-ish urls (as page urls and
  * referrer urls).
  */
-class Test_Piwik_Fixture_SomeVisitsWithLongUrls extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_SomeVisitsWithLongUrls extends Fixture
 {
     public $dateTime = '2010-03-06 01:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/SomeVisitsWithNonUnicodePageTitles.php b/tests/PHPUnit/Fixtures/SomeVisitsWithNonUnicodePageTitles.php
index 96758636a90722da2fe7c80080daeef67e330d92..9548a2c4526ebb17b7e7731902824b9785c9341c 100644
--- a/tests/PHPUnit/Fixtures/SomeVisitsWithNonUnicodePageTitles.php
+++ b/tests/PHPUnit/Fixtures/SomeVisitsWithNonUnicodePageTitles.php
@@ -11,7 +11,7 @@ use Piwik\Plugins\SitesManager\API;
 /**
  * Adds one website and some visits with non unicode page titles.
  */
-class Test_Piwik_Fixture_SomeVisitsWithNonUnicodePageTitles extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_SomeVisitsWithNonUnicodePageTitles extends Fixture
 {
     public $idSite1 = 1;
     public $dateTime = '2010-01-03 11:22:33';
diff --git a/tests/PHPUnit/Fixtures/ThreeGoalsOnePageview.php b/tests/PHPUnit/Fixtures/ThreeGoalsOnePageview.php
index fbb3579c393153268fdf97b33b0e48eabf964f1c..31962ff292d22a46efc7ce89b90f69f4ce646593 100644
--- a/tests/PHPUnit/Fixtures/ThreeGoalsOnePageview.php
+++ b/tests/PHPUnit/Fixtures/ThreeGoalsOnePageview.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\Goals\API;
  * Fixture that adds one site with three goals and tracks one pageview & one manual
  * goal conversion.
  */
-class Test_Piwik_Fixture_ThreeGoalsOnePageview extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_ThreeGoalsOnePageview extends Fixture
 {
     public $dateTime = '2009-01-04 00:11:42';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/ThreeSitesWithManyVisitsWithSiteSearch.php b/tests/PHPUnit/Fixtures/ThreeSitesWithManyVisitsWithSiteSearch.php
index 7fe98161735ca105b769dc9359eb5486dd828496..7805b64d750955e7c991cd6a2d9c5fe51ea2a3ba 100644
--- a/tests/PHPUnit/Fixtures/ThreeSitesWithManyVisitsWithSiteSearch.php
+++ b/tests/PHPUnit/Fixtures/ThreeSitesWithManyVisitsWithSiteSearch.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\SitesManager\API;
  * Adds three websites with different site search configurations and adds
  * several visits to each of them.
  */
-class Test_Piwik_Fixture_ThreeSitesWithManyVisitsWithSiteSearch extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_ThreeSitesWithManyVisitsWithSiteSearch extends Fixture
 {
     public $idSite1 = 1;
     public $idSite2 = 2;
diff --git a/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php b/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php
index d83a2018095b898cb8c57b62e032854e85722678..fc10c679bd186bdcfeacb033656c215e5b544f2a 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php
@@ -11,7 +11,7 @@ use Piwik\Plugins\Goals\API;
 /**
  * Adds two sites and tracks some visits with ecommerce orders.
  */
-class Test_Piwik_Fixture_TwoSitesEcommerceOrderWithItems extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoSitesEcommerceOrderWithItems extends Fixture
 {
     public $dateTime = '2011-04-05 00:11:42';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers.php b/tests/PHPUnit/Fixtures/TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers.php
index 318b18594c2b41c1e36cd62e56767cbd99331a62..f94f220354234279c0f32b34f29b2dfb26e70d88 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\Goals\API;
  * Adds one website and tracks visits on different days over a month
  * using referrer URLs with search engines.
  */
-class Test_Piwik_Fixture_TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers extends Fixture
 {
     public $dateTime = '2010-02-01 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/TwoSitesTwoVisitorsDifferentDays.php b/tests/PHPUnit/Fixtures/TwoSitesTwoVisitorsDifferentDays.php
index f69ce939e636fb093c0d816c850d954f0af357a9..8f6ae42a57b063ce7a3f747adb0715e3db1b40a7 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesTwoVisitorsDifferentDays.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesTwoVisitorsDifferentDays.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\SitesManager\API as APISitesManager;
 /**
  * Adds two websites and tracks visits from two visitors on different days.
  */
-class Test_Piwik_Fixture_TwoSitesTwoVisitorsDifferentDays extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoSitesTwoVisitorsDifferentDays extends Fixture
 {
     public $idSite1 = 1;
     public $idSite2 = 2;
diff --git a/tests/PHPUnit/Fixtures/TwoSitesVisitsInPast.php b/tests/PHPUnit/Fixtures/TwoSitesVisitsInPast.php
index 5b1ddfc0a0663e8d58eabb9ba4c8fb5c7b901bf0..b327e9be0e525e04932d04e235a490b079536dfc 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesVisitsInPast.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesVisitsInPast.php
@@ -10,7 +10,7 @@ use Piwik\Date;
 /**
  * Adds two sites and tracks several visits all in the past.
  */
-class Test_Piwik_Fixture_TwoSitesVisitsInPast extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoSitesVisitsInPast extends Fixture
 {
     public $dateTimeFirstDateWebsite1 = '2010-03-06 01:22:33';
     public $dateTimeDateInPastWebsite1 = '2010-01-06 01:22:33';
diff --git a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
index 26cd3a2092eaa60b230546df1680fedda6c26e3f..58d9967e963f3e4a2f809e8df34ea4c4ccdc5518 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\Annotations\API;
 /**
  * A fixture that adds two websites and annotations for each website.
  */
-class Test_Piwik_Fixture_TwoSitesWithAnnotations extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoSitesWithAnnotations extends Fixture
 {
     public $dateTime = '2011-01-01 00:11:42';
     public $idSite1 = 1;
diff --git a/tests/PHPUnit/Fixtures/TwoVisitsNoKeywordWithBot.php b/tests/PHPUnit/Fixtures/TwoVisitsNoKeywordWithBot.php
index 51a9ef8651252c0f2f1b463919cf52a3085cbf47..076e9d3c503c4d35ff8bfeefdfd4c42647fffdf2 100644
--- a/tests/PHPUnit/Fixtures/TwoVisitsNoKeywordWithBot.php
+++ b/tests/PHPUnit/Fixtures/TwoVisitsNoKeywordWithBot.php
@@ -12,7 +12,7 @@ use Piwik\Plugins\Goals\API;
  * Adds one site and tracks two visits. One visit is a bot and one has no keyword
  * but is from a search engine.
  */
-class Test_Piwik_Fixture_TwoVisitsNoKeywordWithBot extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoVisitsNoKeywordWithBot extends Fixture
 {
     public $dateTime = '2010-03-06 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php b/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php
index 88ba17670c17e98f73f2f71c49bdae4eb535d827..d9c1c8ab62dd96ca40bc2943d0404ae4af2dc04b 100644
--- a/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php
+++ b/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php
@@ -11,7 +11,7 @@ use Piwik\Plugins\Goals\API as APIGoals;
 /**
  * Tracks custom events
  */
-class Test_Piwik_Fixture_TwoVisitsWithCustomEvents extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoVisitsWithCustomEvents extends Fixture
 {
     public $dateTime = '2010-01-03 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/TwoVisitsWithCustomVariables.php b/tests/PHPUnit/Fixtures/TwoVisitsWithCustomVariables.php
index a707b22ef2e76b226d30fe885220380910489815..676e97b89bd564af27e74b01675d8d50b043465d 100644
--- a/tests/PHPUnit/Fixtures/TwoVisitsWithCustomVariables.php
+++ b/tests/PHPUnit/Fixtures/TwoVisitsWithCustomVariables.php
@@ -11,7 +11,7 @@ use Piwik\Plugins\Goals\API;
 /**
  * Adds one site with two goals and tracks two visits with custom variables.
  */
-class Test_Piwik_Fixture_TwoVisitsWithCustomVariables extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_TwoVisitsWithCustomVariables extends Fixture
 {
     public $dateTime = '2010-01-03 11:22:33';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/VisitOverSeveralDaysImportedLogs.php b/tests/PHPUnit/Fixtures/VisitOverSeveralDaysImportedLogs.php
index 6a4ad7393a38845f002e4164db7440192f65d26c..71de9886944ba6f97f191e372f87caa3bc9832e0 100644
--- a/tests/PHPUnit/Fixtures/VisitOverSeveralDaysImportedLogs.php
+++ b/tests/PHPUnit/Fixtures/VisitOverSeveralDaysImportedLogs.php
@@ -11,7 +11,7 @@
  * useful to test there are three visits are created for this visitor, as expected
  *
  */
-class Test_Piwik_Fixture_VisitOverSeveralDaysImportedLogs extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_VisitOverSeveralDaysImportedLogs extends Fixture
 {
     public $dateTime = '2013-04-07 19:00:00';
     public $idSite = 1;
diff --git a/tests/PHPUnit/Fixtures/VisitsInDifferentTimezones.php b/tests/PHPUnit/Fixtures/VisitsInDifferentTimezones.php
index fe419b233ff854a7bd3d46fa40f1b159ac0be764..8df71672fb43bc9816d6f40ca93d70258ed7315e 100644
--- a/tests/PHPUnit/Fixtures/VisitsInDifferentTimezones.php
+++ b/tests/PHPUnit/Fixtures/VisitsInDifferentTimezones.php
@@ -10,7 +10,7 @@ use Piwik\Date;
 /**
  * Adds one site with a non UTC timezone and tracks a couple visits near the end of the day.
  */
-class Test_Piwik_Fixture_VisitsInDifferentTimezones extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_VisitsInDifferentTimezones extends Fixture
 {
     public $idSite = 1;
     public $dateTime = '2010-03-06';
diff --git a/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php b/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php
index 90f01e35472cab6d66380618882708f3cf67452a..08d7e3dbcdaa29982fcc722dff7c67cdda211a87 100644
--- a/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php
+++ b/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php
@@ -11,7 +11,7 @@ use Piwik\Date;
  * Adds one website and tracks several visits from one visitor on
  * different days that span about a month apart.
  */
-class Test_Piwik_Fixture_VisitsOverSeveralDays extends Test_Piwik_BaseFixture
+class Test_Piwik_Fixture_VisitsOverSeveralDays extends Fixture
 {
     public $dateTimes = array(
         '2010-12-14 01:00:00',
diff --git a/tests/PHPUnit/Integration/ArchiveCronTest.php b/tests/PHPUnit/Integration/ArchiveCronTest.php
index 91e2353c7ec8f2cd13c096819f9b05ba20e54f77..719ed350ea91007e4f14bd4c373c7d7f9e059196 100644
--- a/tests/PHPUnit/Integration/ArchiveCronTest.php
+++ b/tests/PHPUnit/Integration/ArchiveCronTest.php
@@ -124,7 +124,7 @@ class Test_Piwik_Integration_ArchiveCronTest extends IntegrationTestCase
     private function runArchivePhpCron($options)
     {
         $archivePhpScript = PIWIK_INCLUDE_PATH . '/tests/PHPUnit/proxy/archive.php';
-        $urlToProxy = Test_Piwik_BaseFixture::getRootUrl() . 'tests/PHPUnit/proxy/index.php';
+        $urlToProxy = Fixture::getRootUrl() . 'tests/PHPUnit/proxy/index.php';
 
         // create the command
         $cmd = "php \"$archivePhpScript\" --url=\"$urlToProxy\" ";
diff --git a/tests/PHPUnit/Integration/AutoSuggestAPITest.php b/tests/PHPUnit/Integration/AutoSuggestAPITest.php
index 87d58b901298ddbb48e3e61e590827c4eb4824ea..d86814e125ee6ba5b0c89c463f4deac6032e2dbb 100644
--- a/tests/PHPUnit/Integration/AutoSuggestAPITest.php
+++ b/tests/PHPUnit/Integration/AutoSuggestAPITest.php
@@ -32,11 +32,10 @@ class Test_Piwik_Integration_AutoSuggestAPITest extends IntegrationTestCase
         $this->runApiTests($api, $params);
     }
 
-
     public function getApiForTesting()
     {
         // we will test all segments from all plugins
-        self::loadAllPlugins();
+        Fixture::loadAllPlugins();
 
         $idSite = self::$fixture->idSite;
         $apiForTesting = array();
@@ -47,7 +46,7 @@ class Test_Piwik_Integration_AutoSuggestAPITest extends IntegrationTestCase
         }
 
         // Skip the test on Mysqli as it fails due to rounding Float errors on latitude/longitude
-        if(getenv('MYSQL_ADAPTER') != 'MYSQLI') {
+        if (getenv('MYSQL_ADAPTER') != 'MYSQLI') {
             $apiForTesting[] = array('Live.getLastVisitsDetails',
                                      array('idSite' => $idSite,
                                            'date'   => '1998-07-12,today',
diff --git a/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php b/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php
index ab7a68ed17f8fa33d69c6cb67cd4549cc2f3a072..a0a8e37881fd35db9fd462f15e800db8bc47e79c 100644
--- a/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php
+++ b/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php
@@ -16,7 +16,16 @@ class Test_Piwik_Integration_BackwardsCompatibility1XTest extends IntegrationTes
     const FIXTURE_LOCATION = '/tests/resources/piwik-1.13-dump.sql';
 
     public static $fixture = null; // initialized below class
-    public static $defaultApiNotToCall = null; // initialized below class
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        // NOTE: VisitFrequency.get cannot be tested since it now uses a segment and thus requires archiving
+        //       to be enabled.
+        $this->defaultApiNotToCall[] = 'Referrers';
+        $this->defaultApiNotToCall[] = 'VisitFrequency.get';
+    }
 
     /**
      * @dataProvider getApiForTesting
@@ -42,9 +51,4 @@ class Test_Piwik_Integration_BackwardsCompatibility1XTest extends IntegrationTes
 Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture = new Piwik_Test_Fixture_SqlDump();
 Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture->dumpUrl =
     PIWIK_INCLUDE_PATH . Test_Piwik_Integration_BackwardsCompatibility1XTest::FIXTURE_LOCATION;
-Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture->tablesPrefix = 'piwiktests_';
-
-// NOTE: VisitFrequency.get cannot be tested since it now uses a segment and thus requires archiving
-//       to be enabled.
-Test_Piwik_Integration_BackwardsCompatibility1XTest::$defaultApiNotToCall =
-    array_merge(IntegrationTestCase::$defaultApiNotToCall, array('Referrers', 'VisitFrequency.get'));
\ No newline at end of file
+Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture->tablesPrefix = 'piwiktests_';
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/BlobReportLimitingTest.php b/tests/PHPUnit/Integration/BlobReportLimitingTest.php
index a1ca74377b2559b8848c2bdaefd7e8f71c552943..3762ef4b403aa1bd467f9202b4f38853b23a4394 100755
--- a/tests/PHPUnit/Integration/BlobReportLimitingTest.php
+++ b/tests/PHPUnit/Integration/BlobReportLimitingTest.php
@@ -22,8 +22,7 @@ class Test_Piwik_Integration_BlobReportLimitingTest extends IntegrationTestCase
     public static function setUpBeforeClass()
     {
         self::setUpConfigOptions();
-        parent::_setUpBeforeClass($dbName = false, $createEmptyDatabase = true, $createConfig = false);
-        parent::setUpFixture(self::$fixture);
+        parent::setUpBeforeClass();
     }
 
     public function getApiForTesting()
@@ -150,7 +149,8 @@ class Test_Piwik_Integration_BlobReportLimitingTest extends IntegrationTestCase
 
     protected static function setUpConfigOptions()
     {
-        self::createTestConfig();
+        Config::getInstance()->setTestEnvironment();
+
         $generalConfig =& Config::getInstance()->General;
         $generalConfig['datatable_archiving_maximum_rows_referers'] = 3;
         $generalConfig['datatable_archiving_maximum_rows_subtable_referers'] = 2;
@@ -164,4 +164,4 @@ class Test_Piwik_Integration_BlobReportLimitingTest extends IntegrationTestCase
 }
 
 Test_Piwik_Integration_BlobReportLimitingTest::$fixture = new Test_Piwik_Fixture_ManyVisitsWithMockLocationProvider();
-
+Test_Piwik_Integration_BlobReportLimitingTest::$fixture->createConfig = false;
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/Core/CliMultiTest.php b/tests/PHPUnit/Integration/Core/CliMultiTest.php
index 30569eab319573936f0a82dedbfa5e19d43ecbe9..5a1ef6338a215ac1c630449e8a5f5875786338a5 100644
--- a/tests/PHPUnit/Integration/Core/CliMultiTest.php
+++ b/tests/PHPUnit/Integration/Core/CliMultiTest.php
@@ -41,7 +41,7 @@ class Core_CliMultiTest extends IntegrationTestCase
         parent::setUp();
 
         $this->cliMulti  = new CliMulti();
-        $this->authToken = Test_Piwik_BaseFixture::getTokenAuth();
+        $this->authToken = Fixture::getTokenAuth();
 
         $this->urls = array(
             'getAnswerToLife' => $this->completeUrl('?module=API&method=ExampleAPI.getAnswerToLife&format=JSON'),
@@ -130,7 +130,7 @@ class Core_CliMultiTest extends IntegrationTestCase
 
     public function test_request_shouldBeAbleToRenderARegularPageInPiwik()
     {
-        Test_Piwik_BaseFixture::createWebsite('2014-01-01 00:00:00');
+        Fixture::createWebsite('2014-01-01 00:00:00');
 
         $urls = array($this->completeUrl('/?module=Widgetize&idSite=1&period=day&date=today'));
 
@@ -204,7 +204,7 @@ class Core_CliMultiTest extends IntegrationTestCase
 
     private function completeUrl($query)
     {
-        $host = Test_Piwik_BaseFixture::getRootUrl();
+        $host = Fixture::getRootUrl();
 
         if (false === strpos($query, '?')) {
             $query .= '?';
@@ -224,5 +224,4 @@ class Core_CliMultiTest extends IntegrationTestCase
 
         return $numFilesInTmp + $numFilesInSubfolders;
     }
-
-}
+}
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/Core/TrackerTest.php b/tests/PHPUnit/Integration/Core/TrackerTest.php
index 97e9cdd294b60cd015234311f6a206520deb802f..3fd6a34d286a0b8d021f66d77c6b1f8af1ed667c 100644
--- a/tests/PHPUnit/Integration/Core/TrackerTest.php
+++ b/tests/PHPUnit/Integration/Core/TrackerTest.php
@@ -15,8 +15,8 @@ class Core_TrackerTest extends DatabaseTestCase
     {
         parent::setUp();
         \Piwik\Piwik::setUserHasSuperUserAccess(true);
-        Test_Piwik_BaseFixture::createWebsite('2014-02-04');
-
+        Fixture::createWebsite('2014-02-04');
+        Fixture::createSuperUser();
     }
     /**
      * Test the Bulk tracking API as documented in: http://developer.piwik.org/api-reference/tracking-api#bulk-tracking
@@ -31,14 +31,14 @@ class Core_TrackerTest extends DatabaseTestCase
 
     public function test_trackingApiWithBulkRequests_viaCurl_withCorrectTokenAuth()
     {
-        $token_auth = Test_Piwik_BaseFixture::getTokenAuth();
+        $token_auth = Fixture::getTokenAuth();
         \Piwik\Filesystem::deleteAllCacheOnUpdate();
         $this->issueBulkTrackingRequest($token_auth, $expectTrackingToSucceed = true);
     }
 
     protected function issueBulkTrackingRequest($token_auth, $expectTrackingToSucceed)
     {
-        $piwikHost = Test_Piwik_BaseFixture::getRootUrl() . 'tests/PHPUnit/proxy/piwik.php';
+        $piwikHost = Fixture::getRootUrl() . 'tests/PHPUnit/proxy/piwik.php';
 
         $command = 'curl -s -X POST -d \'{"requests":["?idsite=1&url=http://example.org&action_name=Test bulk log Pageview&rec=1","?idsite=1&url=http://example.net/test.htm&action_name=Another bulk page view&rec=1"],"token_auth":"' . $token_auth . '"}\' ' . $piwikHost;
 
diff --git a/tests/PHPUnit/Integration/Core/WidgetsListTest.php b/tests/PHPUnit/Integration/Core/WidgetsListTest.php
index 451c84274d9f97cc3fc1cece7d0cfc1f564d67e8..f779409d42b1fac6bdd51094f4da923eb93c8866 100644
--- a/tests/PHPUnit/Integration/Core/WidgetsListTest.php
+++ b/tests/PHPUnit/Integration/Core/WidgetsListTest.php
@@ -27,12 +27,10 @@ class Core_WidgetsListTest extends DatabaseTestCase
         FakeAccess::$superUser = true;
         Access::setSingletonInstance($pseudoMockAccess);
 
-        Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42');
+        Fixture::createWebsite('2009-01-04 00:11:42');
 
         $_GET['idSite'] = 1;
 
-        IntegrationTestCase::loadAllPlugins();
-
         WidgetsList::_reset();
         $widgets = WidgetsList::get();
         WidgetsList::_reset();
@@ -59,7 +57,6 @@ class Core_WidgetsListTest extends DatabaseTestCase
         foreach ($numberOfWidgets AS $category => $widgetCount) {
             $this->assertEquals($widgetCount, count($widgets[$category]), sprintf("Widget: %s", $category));
         }
-        IntegrationTestCase::unloadAllPlugins();
     }
 
     /**
@@ -72,13 +69,11 @@ class Core_WidgetsListTest extends DatabaseTestCase
         FakeAccess::$superUser = true;
         Access::setSingletonInstance($pseudoMockAccess);
 
-        Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42');
+        Fixture::createWebsite('2009-01-04 00:11:42');
         API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1);
 
         $_GET['idSite'] = 1;
 
-        IntegrationTestCase::loadAllPlugins();
-
         WidgetsList::_reset();
         $widgets = WidgetsList::get();
         WidgetsList::_reset();
@@ -107,13 +102,11 @@ class Core_WidgetsListTest extends DatabaseTestCase
         FakeAccess::$superUser = true;
         Access::setSingletonInstance($pseudoMockAccess);
 
-        Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42', true);
+        Fixture::createWebsite('2009-01-04 00:11:42', true);
         API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1);
 
         $_GET['idSite'] = 1;
 
-        IntegrationTestCase::loadAllPlugins();
-
         WidgetsList::_reset();
         $widgets = WidgetsList::get();
         WidgetsList::_reset();
@@ -142,13 +135,11 @@ class Core_WidgetsListTest extends DatabaseTestCase
         FakeAccess::$superUser = true;
         Access::setSingletonInstance($pseudoMockAccess);
 
-        Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42', true);
+        Fixture::createWebsite('2009-01-04 00:11:42', true);
         API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1);
 
         $_GET['idSite'] = 1;
 
-        IntegrationTestCase::loadAllPlugins();
-
         WidgetsList::_reset();
         $widgets = WidgetsList::get();
 
@@ -187,7 +178,7 @@ class Core_WidgetsListTest extends DatabaseTestCase
 
         \Piwik\Translate::loadEnglishTranslation();
 
-        Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42', true);
+        Fixture::createWebsite('2009-01-04 00:11:42', true);
 
         $_GET['idSite'] = 1;
 
diff --git a/tests/PHPUnit/Integration/Plugins/UsersManagerTest.php b/tests/PHPUnit/Integration/Plugins/UsersManagerTest.php
index 99e25217c826c2882e3bb6ebb1a830bc3c279496..a13e616eb69c8610465f64117edbcebab78a4016 100644
--- a/tests/PHPUnit/Integration/Plugins/UsersManagerTest.php
+++ b/tests/PHPUnit/Integration/Plugins/UsersManagerTest.php
@@ -3,6 +3,7 @@ use Piwik\Access;
 use Piwik\Plugins\SitesManager\API as APISitesManager;
 use Piwik\Plugins\UsersManager\API;
 use Piwik\Plugins\UsersManager\Model;
+use Piwik\Translate;
 
 /**
  * Piwik - Open source web analytics
diff --git a/tests/PHPUnit/Integration/PrivacyManagerTest.php b/tests/PHPUnit/Integration/PrivacyManagerTest.php
index c0f22b78bb1caeb57185f6024dde566385b7aa51..58fd3b6f5a4873a7ffb0fade60e3a805a81c27c7 100644
--- a/tests/PHPUnit/Integration/PrivacyManagerTest.php
+++ b/tests/PHPUnit/Integration/PrivacyManagerTest.php
@@ -632,12 +632,12 @@ class PrivacyManagerTest extends IntegrationTestCase
         //   - http://whatever.com/42/{$daysSinceLastVisit}
 
         $start = Date::factory(self::$dateTime);
-        self::$idSite = Test_Piwik_BaseFixture::createWebsite('2012-01-01', $ecommerce = 1);
+        self::$idSite = Fixture::createWebsite('2012-01-01', $ecommerce = 1);
         $idGoal = APIGoals::getInstance()->addGoal(self::$idSite, 'match all', 'url', 'http', 'contains');
 
-        $t = Test_Piwik_BaseFixture::getTracker(self::$idSite, $start, $defaultInit = true);
+        $t = Fixture::getTracker(self::$idSite, $start, $defaultInit = true);
         $t->enableBulkTracking();
-        $t->setTokenAuth(Test_Piwik_BaseFixture::getTokenAuth());
+        $t->setTokenAuth(Fixture::getTokenAuth());
 
         for ($daysAgo = self::$daysAgoStart; $daysAgo >= 0; $daysAgo -= 5) // one visit every 5 days
         {
@@ -665,7 +665,7 @@ class PrivacyManagerTest extends IntegrationTestCase
             $t->doTrackEcommerceOrder($orderId = '937nsjusu ' . $dateTime, $grandTotal = 1111.11, $subTotal = 1000,
                 $tax = 111, $shipping = 0.11, $discount = 666);
         }
-        Test_Piwik_BaseFixture::checkBulkTrackingResponse($t->doBulkTrack());
+        Fixture::checkBulkTrackingResponse($t->doBulkTrack());
     }
 
     protected static function _addReportData()
diff --git a/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchNONETest.php b/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchNONETest.php
index 96ecc2879179e932b0d87b0ffa6a6ecaf163b6ef..3b87220e27c7744456e2f21ecf9b9702272246ee 100755
--- a/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchNONETest.php
+++ b/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchNONETest.php
@@ -25,7 +25,8 @@ class Test_Piwik_Integration_TwoVisitsWithCustomVariables_SegmentMatchNONE exten
 
     public function getApiForTesting()
     {
-        IntegrationTestCase::loadAllPlugins();
+        // we will test all segments from all plugins
+        Fixture::loadAllPlugins();
 
         $apiToCall = array('VisitsSummary.get', 'CustomVariables.getCustomVariables');
 
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index b7a5829fff55cabe0edea190cc12eb4386f586d9..f3bd65923c51cbd328d594bf54dfbabf18a3f52c 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -35,224 +35,7 @@ require_once PIWIK_INCLUDE_PATH . '/libs/PiwikTracker/PiwikTracker.php';
  */
 abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
 {
-    /**
-     * Identifies the last language used in an API/Controller call.
-     *
-     * @var string
-     */
-    protected $lastLanguage;
-
-    /**
-     * Creates a config object for use w/ tests.
-     */
-    public static function createTestConfig()
-    {
-        Config::getInstance()->setTestEnvironment();
-    }
-
-    /**
-     * Sets up access instance.
-     */
-    public static function createAccessInstance()
-    {
-        Access::setSingletonInstance(null);
-        Access::getInstance();
-        Piwik::postEvent('Request.initAuthenticationObject');
-    }
-    
-    /**
-     * Connects to MySQL w/o specifying a database.
-     */
-    public static function connectWithoutDatabase()
-    {
-        $dbConfig = Config::getInstance()->database;
-        $oldDbName = $dbConfig['dbname'];
-        $dbConfig['dbname'] = null;
-
-        Db::createDatabaseObject($dbConfig);
-
-        $dbConfig['dbname'] = $oldDbName;
-    }
-
-    public static function setUpBeforeClass()
-    {
-        static::_setUpBeforeClass();
-
-        if (isset(static::$fixture)) {
-            static::setupFixture(static::$fixture);
-        }
-    }
-
-    public static function loadAllPlugins()
-    {
-        $plugins = static::getPluginsToLoadDuringTests();
-        $pluginsManager = \Piwik\Plugin\Manager::getInstance();
-
-        // Load all plugins
-        $pluginsManager->loadPlugins($plugins);
-
-        // Install plugins
-        $messages = $pluginsManager->installLoadedPlugins();
-        if(!empty($messages)) {
-//            echo implode("  ----  ", $messages);
-        }
-
-        // Activate them
-        foreach($plugins as $name) {
-            if(!$pluginsManager->isPluginActivated($name)) {
-                $pluginsManager->activatePlugin($name);
-            }
-        }
-    }
-
-    public static function unloadAllPlugins()
-    {
-        try {
-            $plugins = \Piwik\Plugin\Manager::getInstance()->getLoadedPlugins();
-            foreach ($plugins AS $plugin) {
-                $plugin->uninstall();
-            }
-            \Piwik\Plugin\Manager::getInstance()->unloadPlugins();
-        } catch (Exception $e) {
-        }
-    }
-
-    protected static function setupFixture($fixture)
-    {
-        try {
-            $fixture->setUp();
-        } catch (Exception $e) {
-            static::fail("Failed to setup fixture: " . $e->getMessage() . "\n" . $e->getTraceAsString());
-        }
-    }
-
-    protected static function teardownFixture($fixture)
-    {
-        if (isset(static::$fixture)) {
-            static::tearDownFixture(static::$fixture);
-        }
-
-        $fixture->tearDown();
-    }
-
-    /**
-     * setupBeforeClass' implementation. Can be called by derived classes in case
-     * they need to do some custom setup procedure.
-     */
-    public static function _setUpBeforeClass($dbName = false, $createEmptyDatabase = true, $createConfig = true, $installPlugins = null)
-    {
-        try {
-            \Piwik\SettingsPiwik::$piwikUrlCache = '';
-
-            if ($createConfig) {
-                static::createTestConfig();
-            }
-
-            if ($dbName === false) // must be after test config is created
-            {
-                $dbName = Config::getInstance()->database['dbname'];
-            }
-
-            static::connectWithoutDatabase();
-            if ($createEmptyDatabase) {
-                DbHelper::dropDatabase();
-            }
-            DbHelper::createDatabase($dbName);
-            DbHelper::disconnectDatabase();
-
-            // reconnect once we're sure the database exists
-            Config::getInstance()->database['dbname'] = $dbName;
-            Db::createDatabaseObject();
-
-            DbHelper::createTables();
-
-            \Piwik\Plugin\Manager::getInstance()->loadPlugins(array());
-        } catch (Exception $e) {
-            static::fail("TEST INITIALIZATION FAILED: " . $e->getMessage() . "\n" . $e->getTraceAsString());
-        }
-
-        include "DataFiles/SearchEngines.php";
-        include "DataFiles/Socials.php";
-        include "DataFiles/Languages.php";
-        include "DataFiles/Countries.php";
-        include "DataFiles/Currencies.php";
-        include "DataFiles/LanguageToCountry.php";
-        include "DataFiles/Providers.php";
-        
-        static::createAccessInstance();
-
-        // We need to be SU to create websites for tests
-        Piwik::setUserHasSuperUserAccess();
-
-        Cache::deleteTrackerCache();
-
-        static::loadAllPlugins();
-
-
-        $_GET = $_REQUEST = array();
-        $_SERVER['HTTP_REFERER'] = '';
-
-        // Make sure translations are loaded to check messages in English
-        Translate::reloadLanguage('en');
-        API::getInstance()->setLanguageForUser('superUserLogin', 'en');
-
-        // List of Modules, or Module.Method that should not be called as part of the XML output compare
-        // Usually these modules either return random changing data, or are already tested in specific unit tests.
-        static::setApiNotToCall(static::$defaultApiNotToCall);
-        static::setApiToCall(array());
-        
-        FakeAccess::$superUserLogin = 'superUserLogin';
-        
-        \Piwik\SettingsPiwik::$cachedKnownSegmentsToArchive = null;
-        \Piwik\CacheFile::$invalidateOpCacheBeforeRead = true;
-
-        \Piwik\Plugins\PrivacyManager\IPAnonymizer::deactivate();
-        \Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker::deactivate();
-    }
-
-    public static function tearDownAfterClass()
-    {
-        static::_tearDownAfterClass();
-    }
-
-    public static function _tearDownAfterClass($dropDatabase = true)
-    {
-        \Piwik\SettingsPiwik::$piwikUrlCache = null;
-        IntegrationTestCase::unloadAllPlugins();
-
-        if ($dropDatabase) {
-            DbHelper::dropDatabase();
-        }
-        Manager::getInstance()->deleteAll();
-        Option::clearCache();
-        Site::clearCache();
-        Cache::deleteTrackerCache();
-        Config::getInstance()->clear();
-        ArchiveTableCreator::clear();
-        \Piwik\Plugins\ScheduledReports\API::$cache = array();
-        \Piwik\Registry::unsetInstance();
-
-        $_GET = $_REQUEST = array();
-        Translate::unloadEnglishTranslation();
-    }
-
-    protected static function getPluginsToLoadDuringTests()
-    {
-        return \Piwik\Plugin\Manager::$pluginsToLoadForTests;
-    }
-
-    public function setUp()
-    {
-        // Make sure the browser running the test does not influence the Country detection code
-        $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en';
-
-        $this->changeLanguage('en');
-    }
-
-    protected static $apiToCall = array();
-    protected static $apiNotToCall = array();
-
-    public static $defaultApiNotToCall = array(
+    public $defaultApiNotToCall = array(
         'LanguagesManager',
         'DBStats',
         'Dashboard',
@@ -276,55 +59,67 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
         'CustomAlerts'
     );
 
-    const DEFAULT_USER_PASSWORD = 'nopass';
-
-    protected $missingExpectedFiles = array();
-    protected $comparisonFailures = array();
+    /**
+     * List of Modules, or Module.Method that should not be called as part of the XML output compare
+     * Usually these modules either return random changing data, or are already tested in specific unit tests.
+     */
+    public $apiNotToCall = array();
+    public $apiToCall = array();
 
     /**
-     * Forces the test to only call and fetch XML for the specified plugins,
-     * or exact API methods.
-     * If not called, all default tests will be executed.
-     *
-     * @param array $apiToCall array( 'ExampleAPI', 'Plugin.getData' )
+     * Identifies the last language used in an API/Controller call.
      *
-     * @throws Exception
-     * @return void
+     * @var string
      */
-    protected static function setApiToCall($apiToCall)
+    protected $lastLanguage;
+
+    protected $missingExpectedFiles = array();
+    protected $comparisonFailures = array();
+
+    public static function setUpBeforeClass()
     {
-        if (func_num_args() != 1) {
-            throw new Exception('setApiToCall expects an array');
+        if (!isset(static::$fixture)) {
+            $fixture = new Fixture();
+        } else {
+            $fixture = static::$fixture;
         }
-        if (!is_array($apiToCall)) {
-            $apiToCall = array($apiToCall);
+
+        try {
+            $fixture->setUpEnvironment();
+            $fixture->setUp();
+        } catch (Exception $e) {
+            static::fail("Failed to setup fixture: " . $e->getMessage() . "\n" . $e->getTraceAsString());
         }
-        static::$apiToCall = $apiToCall;
     }
 
-    /**
-     * Sets a list of API methods to not call during the test
-     *
-     * @param string $apiNotToCall eg. 'ExampleAPI.getPiwikVersion'
-     *
-     * @return void
-     */
-    protected static function setApiNotToCall($apiNotToCall)
+    public static function tearDownAfterClass()
     {
-        if (!is_array($apiNotToCall)) {
-            $apiNotToCall = array($apiNotToCall);
+        if (!isset(static::$fixture)) {
+            $fixture = new Fixture();
+        } else {
+            $fixture = static::$fixture;
         }
-        static::$apiNotToCall = $apiNotToCall;
+
+        $fixture->tearDown();
+        $fixture->tearDownEnvironment();
+    }
+
+    public function setUp()
+    {
+        // Make sure the browser running the test does not influence the Country detection code
+        $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en';
+
+        $this->changeLanguage('en');
     }
 
     protected function alertWhenImagesExcludedFromTests()
     {
-        if (!Test_Piwik_BaseFixture::canImagesBeIncludedInScheduledReports()) {
+        if (!Fixture::canImagesBeIncludedInScheduledReports()) {
             $this->markTestSkipped(
                 'Scheduled reports generated during integration tests will not contain the image graphs. ' .
                     'For tests to generate images, use a machine with the following specifications : ' .
-                    'OS = '.Test_Piwik_BaseFixture::IMAGES_GENERATED_ONLY_FOR_OS.', PHP = '.Test_Piwik_BaseFixture::IMAGES_GENERATED_FOR_PHP .
-                    ' and GD = ' . Test_Piwik_BaseFixture::IMAGES_GENERATED_FOR_GD
+                    'OS = '.Fixture::IMAGES_GENERATED_ONLY_FOR_OS.', PHP = '.Fixture::IMAGES_GENERATED_FOR_PHP .
+                    ' and GD = ' . Fixture::IMAGES_GENERATED_FOR_GD
             );
         }
     }
@@ -384,7 +179,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
             )
         );
 
-        if(Test_Piwik_BaseFixture::canImagesBeIncludedInScheduledReports()) {
+        if(Fixture::canImagesBeIncludedInScheduledReports()) {
             // PDF Scheduled Report
             // tests/PHPUnit/Integration/processed/test_ecommerceOrderWithItems_scheduled_report_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf
             array_push(
@@ -445,7 +240,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
             )
         );
 
-        if (Test_Piwik_BaseFixture::canImagesBeIncludedInScheduledReports()) {
+        if (Fixture::canImagesBeIncludedInScheduledReports()) {
             // HTML Scheduled Report with images
             array_push(
                 $apiCalls,
@@ -491,7 +286,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
 
     /**
      * Given a list of default parameters to set, returns the URLs of APIs to call
-     * If any API was specified in setApiToCall() we ensure only these are tested.
+     * If any API was specified in $this->apiNotToCall we ensure only these are tested.
      * If any API is set as excluded (see list below) then it will be ignored.
      *
      * @param array $parametersToSet Parameters to set in api call
@@ -517,25 +312,22 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
                 $apiId = $moduleName . '.' . $methodName;
 
                 // If Api to test were set, we only test these
-                if (!empty(static::$apiToCall)
-                    && in_array($moduleName, static::$apiToCall) === false
-                    && in_array($apiId, static::$apiToCall) === false
+                if (!empty($this->apiToCall)
+                    && in_array($moduleName, $this->apiToCall) === false
+                    && in_array($apiId, $this->apiToCall) === false
                 ) {
-//	                echo "Skipped $apiId... \n";
                     $skipped[] = $apiId;
                     continue;
-                } // Excluded modules from test
-                elseif (
+                } elseif (
                     ((strpos($methodName, 'get') !== 0 && $methodName != 'generateReport')
-                        || in_array($moduleName, static::$apiNotToCall) === true
-                        || in_array($apiId, static::$apiNotToCall) === true
+                        || in_array($moduleName, $this->apiNotToCall) === true
+                        || in_array($apiId, $this->apiNotToCall) === true
                         || $methodName == 'getLogoUrl'
                         || $methodName == 'getSVGLogoUrl'
                         || $methodName == 'hasSVGLogo'
                         || $methodName == 'getHeaderLogoUrl'
                     )
-                ) {
-//	                echo "Skipped $apiId... \n";
+                ) { // Excluded modules from test
                     $skipped[] = $apiId;
                     continue;
                 }
@@ -718,12 +510,12 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
     protected function checkEnoughUrlsAreTested($requestUrls)
     {
         $countUrls = count($requestUrls);
-        $approximateCountApiToCall = count(static::$apiToCall);
+        $approximateCountApiToCall = count($this->apiToCall);
         if (empty($requestUrls)
             || $approximateCountApiToCall > $countUrls
         ) {
             throw new Exception("Only generated $countUrls API calls to test but was expecting more for this test.\n" .
-                    "Want to test APIs: " . implode(", ", static::$apiToCall) . ")\n" .
+                    "Want to test APIs: " . implode(", ", $this->apiToCall) . ")\n" .
                     "But only generated these URLs: \n" . implode("\n", $requestUrls) . ")\n"
             );
         }
@@ -979,22 +771,20 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
     protected function _setCallableApi($api)
     {
         if ($api == 'all') {
-            static::setApiToCall(array());
-            static::setApiNotToCall(static::$defaultApiNotToCall);
+            $this->apiToCall = array();
+            $this->apiNotToCall = $this->defaultApiNotToCall;
         } else {
             if (!is_array($api)) {
                 $api = array($api);
             }
 
-            static::setApiToCall($api);
+            $this->apiToCall = $api;
 
             if (!in_array('UserCountry.getLocationFromIP', $api)) {
-                static::setApiNotToCall(array(
-                                           'API.getPiwikVersion',
-                                           'UserCountry.getLocationFromIP'
-                                      ));
+                $this->apiNotToCall = array('API.getPiwikVersion',
+                                            'UserCountry.getLocationFromIP');
             } else {
-                static::setApiNotToCall(array());
+                $this->apiNotToCall = array();
             }
         }
     }
@@ -1215,5 +1005,4 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
         $response = $this->removeXmlElement($response, "xmpMM:InstanceID");
         return $response;
     }
-
-}
+}
\ No newline at end of file
diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI
index 3becb2be2543e1266ded7b7e5a6d5db5bef0eac5..4a235856531eb4642a7c8abe8bdf0f6e60fccac9 160000
--- a/tests/PHPUnit/UI
+++ b/tests/PHPUnit/UI
@@ -1 +1 @@
-Subproject commit 3becb2be2543e1266ded7b7e5a6d5db5bef0eac5
+Subproject commit 4a235856531eb4642a7c8abe8bdf0f6e60fccac9
diff --git a/tests/PHPUnit/UITest.php b/tests/PHPUnit/UITest.php
index 604b7ba2847a968c53316138cc302cadfdd91b5d..1c6cfdda431db4fdc0ea766f75abf7ecff643a25 100644
--- a/tests/PHPUnit/UITest.php
+++ b/tests/PHPUnit/UITest.php
@@ -50,7 +50,6 @@ abstract class UITest extends IntegrationTestCase
         parent::setUpBeforeClass();
 
         DbHelper::createAnonymousUser();
-        //UsersManagerApi::getInstance()->addUser('superUserLogin', 'testtest', 'hello2@example.org');
         UsersManagerApi::getInstance()->setSuperUserAccess('superUserLogin', true);
 
         AssetManager::getInstance()->removeMergedAssets();
@@ -256,7 +255,7 @@ abstract class UITest extends IntegrationTestCase
     
     public static function getProxyUrl()
     {
-        return Test_Piwik_BaseFixture::getRootUrl() . 'tests/PHPUnit/proxy/index.php';
+        return Fixture::getRootUrl() . 'tests/PHPUnit/proxy/index.php';
     }
 
     private static function makeDirsAndLinks()
diff --git a/tests/PHPUnit/bootstrap.php b/tests/PHPUnit/bootstrap.php
index 963faf0843be38219ac0961d2a43397ac64e6685..e133221e7fb4261dd483903332b18c482d0d821f 100644
--- a/tests/PHPUnit/bootstrap.php
+++ b/tests/PHPUnit/bootstrap.php
@@ -48,7 +48,7 @@ require_once file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
 \Piwik\Profiler::setupProfilerXHProf( $mainRun = true );
 
 // require test fixtures
-require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/BaseFixture.php';
+require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/Fixture.php';
 
 $fixturesToLoad = array(
     '/tests/PHPUnit/Fixtures/*.php',
@@ -79,7 +79,7 @@ Try again.
 -> If you still get this message, you can work around it by specifying Host + Request_Uri at the top of this file tests/PHPUnit/bootstrap.php. <-";
         exit(1);
     }
-    $baseUrl = Test_Piwik_BaseFixture::getRootUrl();
+    $baseUrl = Fixture::getRootUrl();
 
     \Piwik\SettingsPiwik::checkPiwikServerWorking($baseUrl);
 }