PHPUnit 安裝及簡單單元測試示例

一、概述及配置

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,隊列驅動被設置爲synclaravel

二、Linux下安裝PHPUnit

使用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下安裝PHPUnit

總體上說,在 Windows 下安裝 PHAR 和手工在 Windows 下安裝 Composer 是同樣的過程:緩存

  1. 爲 PHP 的二進制可執行文件創建一個目錄,例如 C:\binapp

  2. ;C:\bin 附加到 PATH 環境變量中(相關幫助composer

  3. 下載 https://phar.phpunit.de/phpunit.phar 並將文件保存到 C:\bin\phpunit.phar

  4. 打開命令行(例如,按 Windows+R » 輸入 cmd » ENTER)

  5. 創建外包覆批處理腳本(最後獲得 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

三、使用PHPUnit實現簡單測試

接下來咱們使用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/,頁面顯示以下內容:

Laravel學院測試應用首頁

而後到項目根目錄下運行以下命令:

phpunit

輸出結果以下:

Laravel單元測試經過頁面

表示測試經過。

接下來咱們修改ExampleTest.php測試方法以下:

public function testBasicExample()
{
    $this->visit('/')
        ->see('LaravelAcademy');
}

再次運行phpunit,則顯示測試失敗信息(部分截圖):

Laravel單元測試失敗輸出

……

Laravel單元測試失敗輸出

測試結果會顯示錯誤數目,錯誤位置及錯誤緣由,方便咱們快速定位錯誤並進行修復。

相關文章
相關標籤/搜索