Laravel 中集成了PHPUnit進行單元測試,實際上,使用PHPUnit進行單元測試在Laravel中是開箱即用的,測試的配置文件爲根目錄下的phpunit.xml
,該配置文件爲咱們作好了全部配置工做:php
<?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStaticAttributes="false" bootstrap="bootstrap/autoload.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" syntaxCheck="false"> <testsuites> <testsuite name="Application Test Suite"> <directory>./tests/</directory> </testsuite> </testsuites> <filter> <whitelist> <directory suffix=".php">app/</directory> </whitelist> </filter> <php> <env name="APP_ENV" value="testing"/> <env name="CACHE_DRIVER" value="array"/> <env name="SESSION_DRIVER" value="array"/> <env name="QUEUE_DRIVER" value="sync"/> </php> </phpunit>
testsuites
中定義了測試文件存放路徑爲根目錄下的tests
目錄。html
filter
中定義了須要進行單元測試的PHP文件存放位置。python
php
中配置了測試環境的環境變量,默認APP_ENV爲testing
,緩存驅動被設置爲array
,Session驅動被設置爲array
,隊列驅動被設置爲sync
。laravel
使用Laravel的測試功能以前須要先安裝PHPUnit,以Homestead虛擬機爲例,安裝步驟以下:shell
wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar sudo mv phpunit.phar /usr/local/bin/phpunit
而後查看PHPUnit的版本驗證是否安裝成功:bootstrap
phpunit --version
PHPUnit x.y.z by Sebastian Bergmann and contributors.windows
總體上說,在 Windows 下安裝 PHAR 和手工在 Windows 下安裝 Composer 是同樣的過程:緩存
爲 PHP 的二進制可執行文件創建一個目錄,例如 C:\bin
app
將 ;C:\bin
附加到 PATH
環境變量中(相關幫助)composer
下載 https://phar.phpunit.de/phpunit.phar 並將文件保存到 C:\bin\phpunit.phar
打開命令行(例如,按 Windows+R » 輸入 cmd
» ENTER)
創建外包覆批處理腳本(最後獲得 C:\bin\phpunit.cmd
):
C:\Users\username> cd C:\bin C:\bin> echo @php "%~dp0phpunit.phar" %* > phpunit.cmd C:\bin> exit
6.新開一個命令行窗口,確認一下能夠在任意路徑下執行 PHPUnit:
C:\Users\username> phpunit --versionPHPUnit x.y.z by Sebastian Bergmann and contributors.
參考:
https://phpunit.de/manual/current/zh_cn/installation.html#installation.phar.windows
接下來咱們使用Laravel提供的ExampleTest.php
實現簡單單元測試,首先咱們修改tests
目錄下的ExampleTest.php
文件以下:
<?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseTransactions; class ExampleTest extends TestCase { /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->visit('/') ->see('Laravel學院'); } }
其中visit
方法用於訪問指定路由頁面,see
方法則判斷返回響應中是否包含指定字符串。
而後在routes.php
中確保包含以下路由(若是沒有的話添加該路由):
Route::get('/',function(){ return view('welcome'); });
訪問http://laravel.app:8000/
,頁面顯示以下內容:
而後到項目根目錄下運行以下命令:
phpunit
輸出結果以下:
表示測試經過。
接下來咱們修改ExampleTest.php
測試方法以下:
public function testBasicExample() { $this->visit('/') ->see('LaravelAcademy'); }
再次運行phpunit
,則顯示測試失敗信息(部分截圖):
……
測試結果會顯示錯誤數目,錯誤位置及錯誤緣由,方便咱們快速定位錯誤並進行修復。