我正在嘗試爲大量代碼更改不可用的應用程序編寫單元測試。幾乎所有的代碼庫中的PHP文件,使用一些$ _ SERVER [「」]變量,如
require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php';
所以,現在當我有編寫和運行PHPUnit的測試情況下,我必須以某種方式設置這些變量。 目前我在用戶環境中設置這些變量,然後做
$_SERVER['DOCUMENT_ROOT'] = getenv('DOCUMENT_ROOT');
require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php';
獲得這樣的服務器變量工作正常。我通過命令行運行我的測試,如$ phpunit test.php
。
Ques1:是否可以設置$ _ SERVER變量在運行命令行通過在PHPUnit測試?
我還必須通過Jenkins運行這些單元測試,並且我無法通過ANT /構建文件設置這些服務器變量。
Ques2:是否可以通過Jenkins中的ant構建文件設置這些變量,或者在通過Jenkins執行phpunit測試之前運行任何shell腳本?
我試圖通過一個shell腳本
export DOCUMENT_ROOT=/server/path-to-root-dir
出口服務器變量並調用腳本在build.xml在詹金斯
<export name="setEnv" description="set server var">
<exec executable="sh">
<arg value = "sumit.sh" />
</exec>
</target>
,但它不工作。有沒有我能爲此做的任何設置? 謝謝!
我們可以設置'$ _ SERVER [ 'DOCUMENT_ROOT']'直接通過構建文件?你的方法' ''完全正常,但我的代碼中有很多SERVER變量,所以我必須寫所有'$ _SERVER [] = getenv()'在一個PHP文件中,並將不得不在所有的測試類中導入該文件。有沒有辦法可以減少它? –
Sumitk
@Sumitk - 您可以在'bootstrap.php'中執行PHPUnit在運行任何測試之前自動加載的任務。將文件放置在測試根目錄下,或使用'--bootstrap'命令行參數將PHPUnit指向它。 –
這個'bootstrap.php'是一個我們與測試文件一起創建的文件,還是與PHPUnit一起提供的?因爲我無法在我的系統上看到它。另外,如果我們創建它,我應該在哪裏放置它?與所有的測試文件或'phpunit.xml.dist'? – Sumitk