2013-03-25 65 views
1

我還沒有找到任何描述如何將外部數據注入到phpunit中的TestCases。我的目標是在xml配置文件中設置工作空間目錄,並從每個類中讀取該目錄的路徑。PhpUnit設置每個測試的工作空間目錄

在引導:

global $workspace; 
$workspace = __DIR__ . '/../test/WorkSpace/'; 

在測試中:現在,我只能用全局變量,這是令人厭惡的解決這個

class MyTest extends PHPUnit_Framework_TestCase 
{ 
    protected $workSpace; 

    public function __construct() 
    { 
     global $workspace; 
     $this->workSpace = $workspace; 
     parent::__construct(); 
    } 

    //... 
} 

爲的配置XML:

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://phpunit.de/phpunit.xsd" 
     backupGlobals="false" 
     verbose="true" 
     bootstrap="Application/bootstrap.php"> 
    <testsuites> 
     <testsuite name="PHPUnit"> 
      <directory>test</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

回答

2

你應該避免使用全局變量。爲此,您可以在引導文件中使用define constants

在審閱文檔,我發現you can define PHP values in your XML file

設置PHP INI設置,常量和全局變量

的元素及其子可以用來配置PHP設置,常量和全局變量。它也可以用來預先設置include_path。

<php> 
     <includePath>.</includePath> 
     <ini name="foo" value="bar"/> 
     <const name="foo" value="bar"/> 
     <var name="foo" value="bar"/> 
     <env name="foo" value="bar"/> 
     <post name="foo" value="bar"/> 
     <get name="foo" value="bar"/> 
     <cookie name="foo" value="bar"/> 
     <server name="foo" value="bar"/> 
     <files name="foo" value="bar"/> 
     <request name="foo" value="bar"/> 
    </php> 

上面的XML配置對應下面的PHP代碼:

ini_set('foo', 'bar'); 
define('foo', 'bar'); 
$GLOBALS['foo'] = 'bar'; 
$_ENV['foo'] = 'bar'; 
$_POST['foo'] = 'bar'; 
$_GET['foo'] = 'bar'; 
$_COOKIE['foo'] = 'bar'; 
$_SERVER['foo'] = 'bar'; 
$_FILES['foo'] = 'bar'; 
$_REQUEST['foo'] = 'bar'; 

正如我上面所說的,我建議你使用定義常量來使用,而不是的全局變量。

+0

這對我來說也是一樣。有什麼方法可以在xml文件中定義它嗎? – inf3rno 2013-03-25 09:15:36

+0

我已經更新了我的答案。檢查是否適合你要找的東西 – fiunchinho 2013-03-25 09:18:59

+0

咋,這個很有用,非常感謝! – inf3rno 2013-03-25 09:33:14