2013-02-24 84 views
3

在我phpunit.xml文件,我已經得到了日誌代碼覆蓋率報告一大塊,這樣的事情:如何在phpunit.xml文件中引用環境變量?

<logging> 
    <log type="coverage-html" target="./logs/coverage" ... 
</logging> 

我不喜歡使用,不過目標路徑的硬編碼字符串。我希望每個用戶都能夠通過一個環境變量指定他們的目標,這樣他們可以將日誌發送到任何他們喜歡的地方,而無需更改源代碼控制的文件。我希望做這樣的事情:

<logging> 
    <log type="coverage-html" target="$LOG_PATH" ... 
</logging> 

我沒有看到這種替代在PHPUnit的文檔的任何支持。有沒有人有如何完成這個想法?

+0

好的問題,我使用Phinx遷移系統爲我的數據庫遷移編碼在php中。它是通過JSON(而不是xml)配置的,但是你可以設置默認值並且覆蓋環境變量,就像你在你的問題中提出的一樣。希望這存在於PHP單位。不喜歡創建文件本地副本只是爲了更改基本源代碼目錄或測試文件目錄等簡單的東西 - 特別是至少在一個答案中推薦使用完全限定路徑的渴望。 – Ray 2017-01-22 19:29:04

回答

6

其實你的倉庫裏不應該有phpunit.xml。 PHPUnit在執行時查找兩個XML文件,即phpunit.xmlphpunit.xml.dist。如果發現它將始終優先phpunit.xml,否則它將退回到phpunit.xml.dist。從documentation

如果phpunit.xml或phpunit.xml.dist(按順序)在當前工作目錄中,並沒有使用--configuration,配置將自動從該文件中讀取。

這樣說你應該在你的倉庫中有phpunit.xml.dist作爲運行測試的模板/樣板設置。然後,如果每個開發人員希望添加其特定設置,則可以從中創建自己的phpunit.xml

此外文件phpunit.xml應該在您的存儲庫中被忽略。

+0

完美,謝謝! – 2013-03-05 14:38:43

+0

所以答案是沒有能力通過環境變量動態替換你的配置XML文件 - 你必須修改你想改變的每個項目。希望這個功能存在! – Ray 2017-01-22 19:23:57

0

根據Herr Bergman

protected $backupGlobals = FALSE; 

在您的測試類將禁用備份和恢復的全局變量(默認)的行爲。但是,請注意,將其放入setUp方法中將不起作用。希望有所幫助。

+1

你誤解了這個問題。我在談論的是shell環境變量,而不是PHP變量。我想在phpunit.xml文件中引用它們,而不是實際的測試。 – 2013-02-28 16:06:03