如何愉快的在PhpStorm中進行PHPUnit單元測試和Xdebug斷點調試?

前言

  • 若是你想作個接口測試,但並不想公開內部接口
  • 若是你只是想對本身封裝的某塊代碼作個小測試
  • 若是你想要編寫代碼邊調試,又不想操做 Postman 或前端的功能來調用 API
  • 本文暫時僅介紹在 LaravelComoposer Library 項目中如何配置 PHPUnit

參考文檔

如何愉快的在PhpStorm中進行PHPUnit單元測試和Xdebug斷點調試? https://segmentfault.com/a/11...
如何愉快的在PhpStorm中進行PHPUnit單元測試和Xdebug斷點調試? https://blog.csdn.net/RobotYa...
——
PHPUnit 手冊: http://www.phpunit.cn/manual/...
phpunit assert斷言分類整理 : https://www.cnblogs.com/nings...

安裝

Xdebug

配置

配置 PhpStorm 的 PHP CLi

  • 選擇 File -> Setting
    PhpStorm Setting
  • 搜索 CLI ,左側選擇 PHP,點擊 + 新增一個 PHP 解釋器。html

    • Windows前端

      • 配置 php 執行程序
      • 點擊那個 同步的小圖標,若是看到 successfully 就說明配置有效
      • 指定 Xdebug 模塊
        Windows下配置PhpStorm PHP CLI
    • Ubuntu
      Ubuntu下配置PhpStorm PHP CLI

配置 PHPUnit

  • 選擇 File -> Setting,搜索 test ,左側選擇 Test Framework,點擊 + 新增一個 PHPUnit Local
    新增一個PHPUnit Localbootstrap

    • Composer Library 項目segmentfault

      • 選擇第一項:使用 composer autoloader 導入配置
      • 選擇你項目下的 vendor/autoload.php
      • 點擊那個 同步的小圖標,若是看到 successfully 就說明配置有效
![配置 composer autoloader](https://img-blog.csdn.net/20180908214108744?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JvYm90WWFuZzEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
- Laravel 項目
    - 選擇第一項:使用 `composer autoloader` 導入配置
    - 選擇你項目下的 `bootstrap/autoload.php`(或者選項目下的 `vendor/autoload.php`)
    - 點擊那個 `同步的小圖標`,若是看到 `successfully` 就說明配置有效
    ![配置 composer autoloader](https://img-blog.csdn.net/20180908233525792?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JvYm90WWFuZzEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

配置 phpunit.xml

  • 在你的項目根目錄下新建 phpunit.xml 文件(但奇怪的是我在 PhpStorm 刪除這個文件,也能夠執行單元測試,猜想多是 phpunit.xml 配置文件是可選的)
<?xml version="1.0" encoding="UTF-8"?>
<!--bootstrap指定啓動測試時, 先加載vendor/autoload.php-->
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">

    <!--testsuite指定測試文件的目錄-->
    <testsuite>
        <directory suffix="Test.php">./tests</directory>
    </testsuite>

    <!--filter過濾依賴文件的位置-->
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./src</directory>
        </whitelist>
    </filter>
</phpunit>
  • 固然這個 phpunit.xml 只是基本配置,還有其餘高級配置請自行百度

新增測試例

  • 在你的項目根目錄下新建 tests 目錄
  • tests 目錄下新建 phpunit 測試類,以 Test.php 爲後綴
    新建 phpunit 測試類
    新建PHPunit測試類-命名
  • 編寫測試例方法,以 test 開頭
<?php
/**
 * Created by PhpStorm.
 * User: robot
 * Date: 2018/9/8
 * Time: 23:54
 */

namespace HonorSdk\Tests;

use PHPUnit\Framework\TestCase;

class HelloTest extends TestCase
{
    public function testHello()
    {
        $expect = 'hello world'; //期待結果
        $result = $this->requestApi(); //請求api 或 調用 service 後返回的結果
        $this->assertEquals($expect, $result); //使用斷言方法 比較結果值
    }

    //僞裝請求數據
    private function requestApi()
    {
        echo $date_1 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_2 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_3 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_4 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_5 = date('Y-m-d H:i:s');
        echo "<br>";;
        $j = 0;
        for ($i = 0; $i < 10; $i++) {
            $j = $i * 2;
            $i = $i + 2;
            echo $i;
            echo "<br>";
            echo $j;
            echo "<br>";
        }
        return 'hello world';
    }
}
  • 打上斷點,而後在要測試的方法名上右鍵,選擇 Debug 這個方法
    開始執行測試例
  • 第一次可能會彈出讓你選擇測試範圍的配置界面,這裏咱們只測試指定方法,因此選擇了 Method
    選擇測試範圍
  • 測試結果api

    • 測試例執行 Xdebug 的流程
      測試例執行Xdebug的流程
    • 測試例執行成功的返回信息
      測試例執行成功的返回信息

調試快捷鍵

  • F7 經過當前行,進入下一行,若是該行是方法,則進入方法體
  • F8 經過當前行,進入下一行,若是該行是方法,也直接進入下一行,不進入方法體
  • F9 經過整個流程,所有順序執行,除非遇到下一個斷點

要點總結

  • 配置 PHP CLIphp.exexdebug.dll
  • 配置 PHPUnitautoload.php
  • 配置 phpunit.xml (可選)
  • 新增 測試例(測試類 和 測試方法)
相關文章
相關標籤/搜索