您好,登錄后才能下訂單哦!
這篇文章主要介紹“在PhpStorm中通過PHPUnit進行單元測試的簡單示例”,在日常操作中,相信很多人在在PhpStorm中通過PHPUnit進行單元測試的簡單示例問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”在PhpStorm中通過PHPUnit進行單元測試的簡單示例”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
Laravel 自帶的測試演示類位于項目根目錄下的 tests
子目錄中。在 PhpStorm 中,該目錄會被自動標記為綠色,表示是測試目錄:
在 PhpStorm 中基于 PHPUnit 進行單元測試很簡單,PhpStorm 已經(jīng)內(nèi)置了通過本地 PHPUnit 運行測試用例的支持(Laravel 項目初始化的時候已經(jīng)安裝了 phpunit
依賴,PhpStorm 會基于這個 phpunit
對項目進行單元測試),無需額外配置,只需要選中待測試目錄、文件、方法,然后在右鍵下拉菜單選擇 Run Test 即可(前提是先要編寫好對應(yīng)的測試用例代碼):
測試結(jié)果會顯示在 PhpStorm 下方的 Run 窗口中:
如果你的 PhpStorm 版本較老,不能自動識別 PHPUnit 并創(chuàng)建對應(yīng)的測試框架配置,可以在 Preferences | Languages & Frameworks | PHP | Test Frameworks 界面(Windows 系統(tǒng)請將 Preferences 替換成 Settings)手動創(chuàng)建,創(chuàng)建的時候選擇 PHPUnit Local,然后再:
腳本路徑映射到當前項目根目錄下的 vendor/autoload.php
,配置文件映射到當前項目根目錄下的 phpunit.xml
。
如果你想要使用其他測試框架(Behat、PHPSpec、Codeception等),也是在這里創(chuàng)建對應(yīng)的測試框架配置:
要對指定文件進行測試,還可以在打開該文件的代碼編輯區(qū)域任意位置右鍵,選擇運行該文件的測試代碼:
或者在聲明該測試類所在行的左側(cè)點擊綠色的運行測試圖標進行測試:
對于指定方法的測試也可以這么做:
測試成功,運行結(jié)果是綠色提示,測試失敗,則是紅色提示:
并且會標識出錯的原因和位置,方便排查。
在上面運行測試用例的時候,細心的同學(xué)可能已經(jīng)看到在下拉菜單中除了運行測試的選項外,還有一個包含覆蓋率的測試選項:
PHPUnit 的代碼覆蓋率分析使用了 PHP_CodeCoverage 這個組件,而這個組件又使用了 PHP Xdebug 擴展所提供的代碼覆蓋率功能,所以要使用代碼覆蓋率功能,需要先安裝 Xdebug 擴展,如果系統(tǒng)沒有安裝該擴展,可以參考前面安裝配置 Xdebug 擴展的教程進行安裝和設(shè)置。
為了告訴 PHPUnit 哪些源代碼文件要包含在代碼覆蓋率報告中,必須配置白名單。Laravel 自帶的 phpunit.xml
(位于項目根目錄下)中已經(jīng)包含了這個配置:
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
上述配置表明 app
目錄下的所有后綴為 .php
的 PHP 代碼都會包含到代碼覆蓋率報告中,即使某些文件沒有被測試用例覆蓋到,同時還可以知道未被覆蓋文件中有哪些行是可執(zhí)行的,另外,你還可以配置跳過哪些代碼塊,更多設(shè)置細節(jié)請參考 PHPUnit 官方文檔。
我們在 tests
目錄上運行包含代碼覆蓋率的測試,運行完成后,PhpStorm 右側(cè)區(qū)域會彈出包含本次測試代碼覆蓋率分析的窗口:
點擊 app
目錄進去,可以看到所有子目錄的代碼覆蓋率情況:
另外,我們點擊左側(cè) Project 區(qū)域,展開項目目錄結(jié)構(gòu)樹,也可以看到測試代碼覆蓋率:
而在代碼編輯區(qū),可以看到被覆蓋的代碼左側(cè)有綠色長條,未被覆蓋到的代碼左側(cè)是紅色長條。
到此,關(guān)于“在PhpStorm中通過PHPUnit進行單元測試的簡單示例”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。