如何愉快的在PhpStorm中進行PHPUnit單元測試和Xdebug斷點調(diào)試城侧?

本作品系 原創(chuàng), 采用 《署名-非商業(yè)性使用-禁止演繹 4.0 國際》 許可協(xié)議

image.png

博文內(nèi)容

前言

  • 如果你想做個接口測試彼妻,但并不想公開內(nèi)部接口
  • 如果你只是想對自己封裝的某塊代碼做個小測試
  • 如果你想要編寫代碼邊調(diào)試嫌佑,又不想操作 Postman 或前端的功能來調(diào)用 API
  • 本文暫時僅介紹在 LaravelComoposer Library 項目中如何配置 PHPUnit

參考文檔

如何愉快的在PhpStorm中進行PHPUnit單元測試和Xdebug斷點調(diào)試豆茫?https://segmentfault.com/a/1190000016323574
如何愉快的在PhpStorm中進行PHPUnit單元測試和Xdebug斷點調(diào)試?https://blog.csdn.net/RobotYang123/article/details/82533080
——
PHPUnit 手冊:http://www.phpunit.cn/manual/current/zh_cn/index.html
phpunit assert斷言分類整理 :https://www.cnblogs.com/ningskyer/articles/5744760.html

安裝

Xdebug

配置

配置 PhpStorm 的 PHP CLi

  • 選擇 File -> Setting


    PhpStorm Setting
  • 搜索 CLI 屋摇,左側(cè)選擇 PHP揩魂,點擊 + 新增一個 PHP 解釋器。
    • Windows
      • 配置 php 執(zhí)行程序
      • 點擊那個 同步的小圖標炮温,如果看到 successfully 就說明配置有效
      • 指定 Xdebug 模塊


        Windows下配置PhpStorm PHP CLI
    • Ubuntu
      Ubuntu下配置PhpStorm PHP CLI

配置 PHPUnit

  • 選擇 File -> Setting火脉,搜索 test ,左側(cè)選擇 Test Framework柒啤,點擊 + 新增一個 PHPUnit Local倦挂。
    新增一個PHPUnit Local
    • Composer Library 項目
      • 選擇第一項:使用 composer autoloader 導入配置
      • 選擇你項目下的 vendor/autoload.php
      • 點擊那個 同步的小圖標,如果看到 successfully 就說明配置有效
        配置 composer autoloader
    • Laravel 項目
      • 選擇第一項:使用 composer autoloader 導入配置
      • 選擇你項目下的 bootstrap/autoload.php(或者選項目下的 vendor/autoload.php
      • 點擊那個 同步的小圖標担巩,如果看到 successfully 就說明配置有效
        配置 composer autoloader

配置 phpunit.xml

  • 在你的項目根目錄下新建 phpunit.xml 文件(但奇怪的是我在 PhpStorm 刪除這個文件方援,也可以執(zhí)行單元測試,猜測可能是 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'; //期待結(jié)果
        $result = $this->requestApi(); //請求api 或 調(diào)用 service 后返回的結(jié)果
        $this->assertEquals($expect, $result); //使用斷言方法 比較結(jié)果值
    }

    //假裝請求數(shù)據(jù)
    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 這個方法
    開始執(zhí)行測試例
  • 第一次可能會彈出讓你選擇測試范圍的配置界面,這里我們只測試指定方法弃衍,所以選擇了 Method
    選擇測試范圍
  • 測試結(jié)果
    • 測試例執(zhí)行 Xdebug 的流程


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


      測試例執(zhí)行成功的返回信息

調(diào)試快捷鍵

  • F7 通過當前行胚鸯,進入下一行,如果該行是方法笨鸡,則進入方法體
  • F8 通過當前行,進入下一行坦冠,如果該行是方法形耗,也直接進入下一行,不進入方法體
  • F9 通過整個流程辙浑,全部順序執(zhí)行激涤,除非遇到下一個斷點

要點總結(jié)

  • 配置 PHP CLIphp.exexdebug.dll
  • 配置 PHPUnitautoload.php
  • 配置 phpunit.xml (可選)
  • 新增 測試例(測試類 和 測試方法)

關(guān)于我的

個人簡介

屬性 屬性值
昵稱 大綿羊、大綿羊rbt判呕、rbtyang倦踢、RobotYang
格言 博觀約取,厚積薄發(fā)侠草;刻意練習辱挥、日益精進
后端 Go、PHP边涕、Python
前端 Vue晤碘、Angular褂微、Uniapp、公眾號园爷、小程序
數(shù)據(jù) MySQL宠蚂、Redis/Memcached、MongoDB
博客 CSDN ? 思否 ? 掘金 ? 簡書 ? 知乎 ? 開源中國 ? 訂閱號(RobotYang123) ?

期望贊賞

萬水千山總是情童社,贊不贊賞都可行 ( ̄▽ ̄)~■干杯□~( ̄▽ ̄)

贊賞碼
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末求厕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扰楼,更是在濱河造成了極大的恐慌呀癣,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灭抑,死亡現(xiàn)場離奇詭異十艾,居然都是意外死亡,警方通過查閱死者的電腦和手機腾节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門忘嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人案腺,你說我怎么就攤上這事庆冕。” “怎么了劈榨?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵访递,是天一觀的道長。 經(jīng)常有香客問我同辣,道長拷姿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任旱函,我火速辦了婚禮响巢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棒妨。我一直安慰自己踪古,他們只是感情好,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布券腔。 她就那樣靜靜地躺著伏穆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纷纫。 梳的紋絲不亂的頭發(fā)上枕扫,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音辱魁,去河邊找鬼铡原。 笑死偷厦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的燕刻。 我是一名探鬼主播只泼,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卵洗!你這毒婦竟也來了请唱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤过蹂,失蹤者是張志新(化名)和其女友劉穎十绑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酷勺,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡本橙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脆诉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甚亭。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖击胜,靈堂內(nèi)的尸體忽然破棺而出亏狰,到底是詐尸還是另有隱情,我是刑警寧澤偶摔,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布暇唾,位于F島的核電站,受9級特大地震影響辰斋,放射性物質(zhì)發(fā)生泄漏策州。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一宫仗、第九天 我趴在偏房一處隱蔽的房頂上張望够挂。 院中可真熱鬧,春花似錦锰什、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至霜幼,卻和暖如春嫩码,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背罪既。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工铸题, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铡恕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓丢间,卻偏偏與公主長得像探熔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烘挫,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359