適用於 PHP 的 NetBeans IDE 支援 PHPUnit 自動化的測試。通過 PHPUnit,NetBeans IDE 可為 PHP 提供程式碼涵蓋範圍,這與 IDE 為 Python 和 Ruby 提供的程式碼涵蓋範圍類似。測試輸出將顯示在功能豐富的輸出視窗中,該視窗與 IDE 的 JUnit、Ruby 和 Python 測試回合器所使用的輸出視窗相同。
NetBeans IDE 還支援將 Selenium 可移植測試架構與 PHPUnit 結合使用。Selenium 外掛程式可以從更新中心擷取。安裝此外掛程式會將 Selenium 伺服器添加到 IDE 的登入伺服器中,並將 Selenium 測試選項添加到 PHP 菜單。
目錄
- 安裝 PHPUnit
- 建立並運行 PHPUnit 測試
- 測試結果和 IDE 輸出
- 程式碼涵蓋範圍
- 使用項目特定的配置
- 在 Selenium 架構上運行測試
要學習本教程,您需要具備以下軟體和資源。
軟體或資源
要求的版本
NetBeans IDE
PHP 下載包
PHP 引擎,包括 PEAR
版本 5。
Web 服務器
推薦使用 Apache HTTP Server 2.2。
PHP 調試器
XDebug 2.0 或更高版本
PHPUnit
版本 3.3.0 或更高版本。
安裝 PHPUnit
請按照
PHPUnit 文檔中所述,使用 PEAR 安裝 PHPUnit。應安裝 PHPUnit 版本 3.3.0 或更高版本。無需任何特殊設定。安裝 PHPUnit 之後,NetBeans 便可識別它。請注意,您需要將 PEAR 隨 PHP 引擎一起安裝。另請注意,PHPUnit 文檔中指出 PHPUnit 通常會安裝到本地 PEAR 目錄。該文檔還給出了具體的路徑:/usr/lib/php/PHPUnit;但在適用於 Windows 的 XAMPP 上,此路徑為 XAMPP_HOME\php\PEAR\PHPUnit。
要檢查 NetBeans IDE 是否可識別您的 PHPUnit 安裝,請開啟“工具”>“選項”(在 Mac 上,請開啟“NetBeans 喜好設定”)並查看 "PHP" 視窗。PHPUnit 指令碼的路徑應顯示在“PHPUnit 指令碼”欄位中。如果此處未顯示指令碼路徑,請進行瀏覽以找到該路徑。
建立並運行 PHPUnit 測試
NetBeans IDE 可以對某個檔案中的所有 PHP 類建立並運行 PHPUnit 測試。為確保測試產生器可以正常運行,請為 PHP 檔案指定與該檔案中的第一類相同的名稱。
為某個類建立並運行 PHPUnit 測試:
- 建立一個名為 Calculator 的 PHP 項目。在此項目中,建立一個名為 Calculator.php 的檔案。在此檔案中,鍵入或粘貼
PHPUnit 文檔的 "Skeleton Generator"(架構產生器)一章中所提供的 Calculator 類。
<?phpclass Calculator{ public function add($a, $b) { return $a + $b; }}?>
添加一個包含 @assert 標註以及一些範例輸入和輸出的註解區塊。請注意,本樣本中包括一個錯誤的斷言。<?phpclass Calculator{ /** * @assert (0, 0) == 0 * @assert (0, 1) == 1 * @assert (1, 0) == 1 * @assert (1, 1) == 2 * @assert (1, 2) == 4 */ public function add($a, $b) { return $a + $b; }}?>
在“項目”視窗中,按右鍵 "Calculator.php" 節點,然後選擇“工具”>“建立 PHPUnit 測試”。請注意,您可以在“源檔案”節點的操作功能表中為項目中的所有檔案建立測試。
第一次建立測試時,將會開啟一個對話方塊,詢問您要儲存測試檔案的目錄。在本樣本中,使用“瀏覽”功能建立了 tests 目錄。
IDE 在一個名為 CalculatorTest.php 的檔案中產生架構測試類別,在“項目”視窗中會顯示該檔案,並在編輯器中將其開啟。
請注意,將為每個 @assert 標註建立一個測試。
/** * Generated from @assert (1, 1) == 2. */ public function testAdd4() { $this->assertEquals( 2, $this->object->add(1, 1) ); }
您既可以測試單個檔案,也可以測試整個項目。要測試專案,請按右鍵項目的父節點,然後選擇“測試”或按 Alt-F6 按鍵組合。要測試 Calculator.php 檔案,請按右鍵該檔案的節點,然後選擇“測試”或按 Ctrl-F6 按鍵組合。本樣本只有一個檔案,且該檔案中只有一個類,因此兩種測試結果相同。IDE 會運行測試並在“測試結果”視窗中顯示結果。
測試結果的更詳細文本版本會顯示在“輸出”視窗中。
測試結果和 IDE 輸出
PHPUnit 測試的結果會顯示在 IDE 的“測試結果”和“輸出”兩個視窗中。“測試結果”視窗包含一個圖形窗格和一個簡短文本窗格。“輸出”視窗提供了輸出的更詳細文本版本。在此部分,您將詳細瞭解“測試結果”視窗和“輸出”視窗。
在“測試結果”視窗中,您可以從下列位置擷取有關失敗的測試的資訊:
- UI 窗格中失敗測試的樹條目所附帶的訊息
- 右側邊窗格中的文本,其中包括指向失敗的測試程式碼的連結
- 將游標懸停在 UI 窗格中失敗的測試上時顯示的工具提示文本
“測試結果”視窗在左側包括以下按鈕:
- 重新運行測試按鈕
- 在顯示所有測試的結果和僅顯示失敗測試的結果之間進行切換的按鈕
- 導航至下一個測試結果的按鈕 ,以及導航至上一個測試結果的按鈕
“輸出”視窗顯示 PHPUnit 指令碼的完整輸出。當您無法通過“測試結果”視窗中的資訊找出錯誤原因時,該視窗會非常有用。與“測試結果”視窗類別似,“輸出”視窗包括指向失敗的測試類別行的連結。此外,該視窗還在左側包括用於重新運行測試的按鈕以及用於開啟 PHP 選項視窗的按鈕。
程式碼涵蓋範圍
適用於 PHP 的 NetBeans IDE 提供了程式碼涵蓋範圍以及 PHPUnit 支援。(IDE 也為 Ruby 和 Python 提供了程式碼涵蓋範圍)。程式碼涵蓋範圍檢查 PHPUnit 測試是否覆蓋了所有方法。在此部分,您將瞭解如何通過現有 Calculator 類來使用程式碼涵蓋範圍。
使用程式碼涵蓋範圍:
- 開啟 Calculator.php,然後新增內容與 add 函數相同的 add2 函數。現在,Calculator 類將如下所示:
<?phpclass Calculator { /** * @assert (0, 0) == 0 * @assert (0, 1) == 1 * @assert (1, 0) == 1 * @assert (1, 1) == 2 * @assert (1, 2) == 4 */ public function add($a, $b) { return $a + $b; } public function add2($a, $b) { return $a + $b; }} ?>
- 按右鍵項目節點。從操作功能表中,選擇“程式碼涵蓋範圍”>“收集並顯示程式碼涵蓋範圍”。預設情況下,“顯示編輯器欄”也會處於選定狀態。
- 現在,編輯器會在底部顯示程式碼涵蓋範圍編輯器欄。由於尚未測試程式碼涵蓋範圍,因此編輯器欄報告覆蓋率為 0%。(在單擊“清除”以清除測試結果後,編輯器欄也會顯示覆蓋率為 0%。)
- 單擊“測試”以測試開啟的檔案,或單擊“所有測試”以運行項目的所有測試。此時將顯示“測試結果”。此外,“程式碼涵蓋範圍”欄會告知您測試所覆蓋的可執行代碼語句百分比。在編輯器視窗中,覆蓋的代碼將以綠色反白,未覆蓋的代碼將以紅色反白。
- 在編輯器欄中,單擊“報告...”。程式碼涵蓋範圍報告開啟,其中顯示了對項目啟動並執行所有測試的結果。使用報告中的按鈕,您可以清除結果,再次運行所有測試或取消啟用代碼覆蓋率(單擊“完成”)。
- 您可以在項目中添加其他類;刪除測試檔案,然後重新建立測試檔案;接下來,再次查看程式碼涵蓋範圍報告。此時將會列出新類。在下面的報告中,Calculator 類又有一個函數未包括在測試中。
使用項目特定的配置
在 IDE 中,可以為項目選擇以下定製配置:
要設定項目特定的配置,請按右鍵項目節點或項目的“測試檔案”節點,然後選擇“屬性”。這會開啟“屬性”對話方塊。然後選擇 PHPUnit 類別。開啟一個對話方塊,可以在其中選擇定製引導、XML 配置或測試套件檔案。如果您不熟悉這些檔案的結構,可以使用 NetBeans IDE 產生架構。
使用定製類載入器的項目需要引導選項,例如,通過實現 Magic 函數 __autoload()。如果需要預先包含一個檔案(如定義項目中的多個類所使用的全域常量的檔案),則也需要使用引導選項。
可通過 XML 設定檔定義命令列調用中使用的選項。
PHPUnit 手冊中提供了完整的介紹。還可以使用 XML 設定檔為測試案例定義 php.ini 設定和全域變數。也可以在 XML 設定檔中設定引導選項。
如果設定定製測試套件,每次選擇“運行”>“測試專案”時,都會運行該套件。如果要僅運行一部分測試,或者要使用最近添加(必須手動添加)的 PHPUnit 功能(如資料提供器),該功能特別有用。
請注意,您可以根據需要定義多個測試套件,並通過在項目資源管理員中按右鍵檔案並選擇“運行”來分別運行這些套件。
為防止造成混亂,NetBeans 會通知您是否使用定製測試套件。可以在“測試結果”和“輸出”視窗中找到通知。
在 Selenium 架構上運行測試
Selenium 是一種測試 Web 應用程式架構的可移植軟體。這些測試可以編寫為 HTML 表,或以各種常用的程式設計語言進行編碼,並且可以直接在目前的多數 網頁瀏覽器中運行。Selenium 可以部署在 Windows、Linux 和 Macintosh 上。有關更多詳細資料,請參見
Selenium Web 網站。
NetBeans IDE 具有包含 Selenium 伺服器的外掛程式。通過此外掛程式,您可以對 PHP、Web 應用程式或 Maven 項目運行 Selenium 測試。要對 PHP 運行 Selenium 測試,需要將 Testing Selenium 軟體包安裝到 PHP 引擎。
對 PHP 運行 Selenium 測試:
- 開啟命令提示字元,然後運行 pear install Testing_Selenium-beta 命令。您需要在 Path 變數中包含 PHP_HOME/php/PEAR。如果成功運行該命令,則將顯示以下提示:install ok: channel://pear.php.net/Testing_Selenium-0.4.3。
- 在 IDE 中,開啟“工具”>“外掛程式”,然後安裝 "Selenium Module for PHP"。
- 在“項目”視窗中,按右鍵 Calculator 項目的節點。選擇“建立”>“其他”。開啟“建立檔案”嚮導。選擇 "Selenium",然後單擊“下一步”。
- 第一次建立 Selenium 測試時,將會開啟一個對話方塊,要求您設定 Selenium 測試檔案的目錄。此目錄應不同於 PHPUnit 測試檔案的目錄。否則,每次運行單元測試時,Selenium 測試都會運行。運行 Selenium 之類的功能測試通常比運行單元測試所花費的時間長,因此在每次運行單元測試時,您可能不會希望運行這些測試。
- 接受“名稱和位置”頁中的預設設定,然後單擊“完成”。新 Selenium 測試檔案在編輯器中開啟,並在“項目”視窗中顯示。
- 現在,“運行 Selenium 測試”項已添加到項目的操作功能表中。單擊此項,Selenium 測試結果隨即顯示在與 PHPUnit 測試相同的“測試結果”視窗中。
更多練習
下面是供您探討的更多思路: