diff --git a/lib/base.php b/lib/base.php
index f30575c7b121387657fd50b7671463fdebe83291..0597183adcf98d7f6c6e2a162075eba92d1c1bb0 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -57,6 +57,9 @@ class OC {
 	 * web path in 'url'
 	 */
 	public static $APPSROOTS = array();
+
+	public static $configDir;
+
 	/*
 	 * requested app
 	 */
@@ -100,6 +103,13 @@ class OC {
 			get_include_path()
 		);
 
+		if(defined('PHPUNIT_RUN') and PHPUNIT_RUN and is_dir(OC::$SERVERROOT . '/tests/config/')) {
+			self::$configDir = OC::$SERVERROOT . '/tests/config/';
+		} else {
+			self::$configDir = OC::$SERVERROOT . '/config/';
+		}
+		OC_Config::$object = new \OC\Config(self::$configDir);
+
 		OC::$SUBURI = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen(OC::$SERVERROOT)));
 		$scriptName = OC_Request::scriptName();
 		if (substr($scriptName, -1) == '/') {
@@ -175,8 +185,8 @@ class OC {
 	}
 
 	public static function checkConfig() {
-		if (file_exists(OC::$SERVERROOT . "/config/config.php")
-			and !is_writable(OC::$SERVERROOT . "/config/config.php")
+		if (file_exists(self::$configDir . "/config.php")
+			and !is_writable(self::$configDir . "/config.php")
 		) {
 			$defaults = new OC_Defaults();
 			if (self::$CLI) {
diff --git a/lib/private/config.php b/lib/private/config.php
index caf7b1d7066982dd4ab28ad1a4b9ab1d5e91b574..8a9d5ca615876573f69ad5cea3af35c994ef53c1 100644
--- a/lib/private/config.php
+++ b/lib/private/config.php
@@ -50,7 +50,7 @@ class Config {
 	protected $debugMode;
 
 	/**
-	 * @param $configDir path to the config dir, needs to end with '/'
+	 * @param string $configDir path to the config dir, needs to end with '/'
 	 */
 	public function __construct($configDir) {
 		$this->configDir = $configDir;
diff --git a/lib/private/legacy/config.php b/lib/private/legacy/config.php
index c457979113e9ccd25d13f11560520273b9e0444f..ab67c8d30200b253982c00a833c3f2f3513faf65 100644
--- a/lib/private/legacy/config.php
+++ b/lib/private/legacy/config.php
@@ -38,7 +38,6 @@
  * This class is responsible for reading and writing config.php, the very basic
  * configuration file of ownCloud.
  */
-OC_Config::$object = new \OC\Config(OC::$SERVERROOT.'/config/');
 class OC_Config {
 
 	/**
diff --git a/lib/private/util.php b/lib/private/util.php
index b8d2da8a0723fa65ddfc9b96231ee937566b19b0..72afa6f94781786bb32b67ee2aa701853cd7c399 100755
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -312,7 +312,7 @@ class OC_Util {
 			.'" target="_blank">giving the webserver write access to the root directory</a>.';
 
 		// Check if config folder is writable.
-		if(!is_writable(OC::$SERVERROOT."/config/") or !is_readable(OC::$SERVERROOT."/config/")) {
+		if(!is_writable(OC::$configDir) or !is_readable(OC::$configDir)) {
 			$errors[] = array(
 				'error' => "Can't write into config directory",
 				'hint' => 'This can usually be fixed by '