2012-10-22 45 views
2

是否可能在運行時處理PHPUnit XML文件時存在配置差異,以便根據執行平臺配置設置?例如,在Ubuntu上使用Color,但在Windows中使用Color。在不同的操作系統上運行PHPUnit與XML配置文件有所不同

爲了解釋:

我正在使用不同的開發平臺,並希望確保我們的代碼適用於Web服務器兩種平臺上。另外,我們使用的工具在不同的平臺上。例如,開發人員的內部後端服務器(PHPUnit,PHPDocs,Wiki和其他工具)位於Ubuntu計算機上。開發人員主動使用基於Windows的PC。

當開發人員更改代碼時,我們希望他們能夠在將代碼檢入到我們的存儲庫之前測試其代碼。因此,他們在本地機器上運行PHPUnit,PHP_CodeSniffer,PHPMD和PHPDocs以查看可以提交的事情。

然後,主系統將會看到代碼提交,並且將與所有人一起重新運行這些測試,並在Ubuntu機器上更改代碼更改,更新公司範圍內的測試結果,代碼覆蓋範圍等。這些測試甚至可以在具有不同OS /語言配置的不同計算機上運行。通過Selenium進行的網絡瀏覽器測試也是在這個時候開始的,同時也是跨越許多不同的Web服務器/操作系統/瀏覽器版本。

當我們介紹新的工具,不同的項目等等時,XML文件正在改變,包括排除文件,測試套件配置等......因此,我們將這個文件保存在源碼樹中,以確保開發人員運行測試時的最新設置。

我希望能夠不同的平臺配置一些設置(這將適用於我們所有的組合,因爲我可以設置任何變量正在使用),而不必有不同的文件,然後在源之後複製,以確保接收到更改。

這是合理的,還是會使用類似Jenkins的東西來幫助我避免這個問題?但是,我試圖儘可能保持Windows PC上的工具的基本功能,以便讓開發人員快速運行它們,否則他們會忽略該步驟。

回答

2

這個答案變成比預期的更長,但它是合適的。快速的答案是建立不同的配置文件。 phpunitwindows7.xml

phpunitubuntu.xml

phpunitmacosx.xml

等等

但我覺得你的問題是,有這麼多不同的configs,這樣做將是一個很大的維護,所以我會先做的是用我想要的設置構建一個對象。基地phpunit.xml加載到SimpleXML對象

$sxe = simplexml_load_file('phpunit.xml); 
// Modify a node 
$sxe->phpunit = '<tessuites....>'; 

// You can access an element's attribute just like this : 
$attribute = $sxe->phpunit->attributes()->$att; 

$sxe->phpunit->attributes()->$verbose = $phpunitSettings->verbose; 

// Saving the whole modified XML to a new filename 
$sxe->asXml('windows7-cookie-cutter-phpunit.xml'); 

每個開發人員將有他們的構建CONFIGS設置爲準PHPUnit的配置文件中適當的根據自己的OS /項目等

詹金斯當然會幫你做這是因爲您可以在您的Ant構建文件中運行此腳本,以便在phpunit運行之前更新這些phpunit配置文件,而不是手動運行它。

你可以做的另一件事是使用

<?php 
    header ("Content-Type:text/xml"); 
?> 

顯示這樣

<phpunit setting="<?php echo $setting; ?>" 

><!-- yada yada--> 
</phpunit> 

動態文件動態文件仍然會由PHP腳本進行訪問,但可能是使用cUrl輕鬆完成以獲得內容的exe:

http://yoursite.com/apps/phpunit-config.php?os=windows7&project=cookiecutterblog

另外,如果您在開發人員計算機上安裝了jenkins,則可以將其設置爲每天使用Poll SCM每小時運行一次,因此如果他們想使用它或不會影響它,即使知道它也仍然可以使用!

enter image description here

如果您使用的是明鉅擴展在eclipse可以預加載腳本來更新PHPUnit的配置文件。

make good

可以加載並在IDE中的每一個文件編輯時輕鬆地運行,然後保存 enter image description here

這裏有一個MakeGood IDE setup tutorial我放在一起。

我不知道將有可能爲開發者更容易,因爲他們不會做任何事情......

+0

感謝長期,詳細的答覆。我將着眼於在我們的測試環境中實現這樣的工作。 –

相關問題