91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHPUnit在PHP項目中如何使用

發布時間:2023-03-15 10:44:42 來源:億速云 閱讀:167 作者:iii 欄目:編程語言

本文小編為大家詳細介紹“PHPUnit在PHP項目中如何使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“PHPUnit在PHP項目中如何使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

單元測試介紹

單元測試是分別對程序的單元(方法, 函數)進行測試,判斷執行結果是否符合預期

單元測試能協助開發者什么?

1.確保單元的執行結果

2.盡早發現程序中的錯誤

3.修改程序, 更加有信心

PHPUnit

PHPUnit 是 PHP 程式語言中最常見的單元測試 (unit testing) 框架,PHPUnit 是參考 xUnit 架構利用 PHP 實作出來。

安裝PHPUnit

# 項目中安裝
$ composer require --dev phpunit/phpunit

# 下載到本地
$ wget https://phar.phpunit.de/phpunit-9.phar

使用項目中安裝可以在項目中直接運行, 無需太多配置, 將 phar 下載到非項目文件夾, 可以減少項目代碼的體積, 我一般采用下載到本地, 然后多個項目公用一個 phpunit.phar, 減少項目體積, 不過需要在 IDE中增加更多配置

配置autoload

添加下面的代碼到composer.json PackageName是項目的名稱,src是包含PHP class文件的文件夾地址,項目根目錄下的子文件夾。

...
    "autoload": {
       "psr-4": {
            "PackageName\\": "src/",
            "PackageName\\Tests": "tests/"
        }
     },
...

設置PHPUnit

在phpstorm中 Languages & Frameworks >PHP >Test Frameworks 根據不同的加載方式設置不同的配置

PHPUnit在PHP項目中如何使用

如果是項目額外加載, 則需要把 phpunit 所在的文件夾作為 library 加入項目, 便于代碼提示 Preferences | Languages & Frameworks | PHP , 加入 phpunit 文件夾

PHPUnit在PHP項目中如何使用

編寫PHPUnit測試

  • 針對類 Example 的測試寫在類 ExampleTest 中, ExampleTest 繼承自 TestCase

  • 對于方法的測試命名為 test* 的公用方法

  • 在測試方法內,類似于 assertEquals() 的斷言方法用來對實際值和預期值的匹配做出驗證

ArrayTest  用 PHPUnit 測試數組操作

<?php
use PHPUnit\Framework\TestCase;

class ArrayTest extends TestCase
{
    public function testPushAndPop()
    {
        $stack = [];
        $this->assertCount(0, $stack);

        $stack[] = 'foo';
        $this->assertEquals('foo', $stack[count($stack) - 1]);
        $this->assertCount(1, $stack);

        $this->assertEquals('foo', array_pop($stack));
        $this->assertCount(0, $stack);
    }
}

在 IDE 中運行

  • 點擊方法名稱

  • 右鍵測試類

  • 右鍵測試文件夾

PHPUnit在PHP項目中如何使用

PHPUnit 斷言

laravel 中除了標準的 PHPUnit 斷言(assertEquals(), assertContains(), assertInstanceOf(), …更多斷言請看https://phpunit.readthedocs.io/zh_CN/latest/assertions.html?highlight=assertTrue#)之外, 還存在很多允許測試 web 應用的檢測項目

assertPageLoaded($uri, $message = null)

檢測最近的頁面是否被加載, 如果不存在 url / message 時候會報錯

assertResponseOk()

是否頁面相應OK

assertReponseStatus($code)

是否響應指定的code

assertViewHas($key, $value = null)

視圖中是否存在指定的數據

assertViewHasAll($bindings)

視圖中是否存在指定的一系列數據

assertViewMissing($key)

指定視圖中是否不存在這個數據

assertRedirectedTo($uri, $with = [])

檢測是否重定向到指定的uri

assertRedirectedToRoute($name, $parameters = [], $with = [])

是否客戶端重定向到指定的路由

assertRedirectedToAction($name, $parameters = [], $with = [])

是否重定向到 action

assertSessionHas($key, $value = null)

session 中是否存在 key/ value

assertSessionHasAll($bindings)

session 中是否存在指定的 kv

assertSessionHasErrors($bindings = [])

session 是否存在錯誤

assertHasOldInput()

session 中是否存在以前的數據

示例 xml 文件

phpunit.xml at 9.x · laravel

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
    bootstrap="vendor/autoload.php"
    colors="true">
    <testsuites>
        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>
        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <coverage processUncoveredFiles="true">
        <include>
            <directory suffix=".php">./app</directory>
        </include>
    </coverage>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="BCRYPT_ROUNDS" value="4"/>
        <env name="CACHE_DRIVER" value="array"/>
        <!-- <env name="DB_CONNECTION" value="sqlite"/> -->
        <!-- <env name="DB_DATABASE" value=":memory:"/> -->
        <env name="MAIL_MAILER" value="array"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="TELESCOPE_ENABLED" value="false"/>
    </php>
</phpunit>

Php 的單元覆蓋率

安裝 xdebug / Phpunit

# 安裝 xdebug
$ pecl install xdebug

啟用 xdebug

# php.ini 文件
xdebug.mode = coverage

PHPUnit在PHP項目中如何使用

PHPUnit在PHP項目中如何使用

讀到這里,這篇“PHPUnit在PHP項目中如何使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

驻马店市| 麟游县| 屏东县| 金山区| 昆明市| 广州市| 新田县| 辽阳县| 康乐县| 湘阴县| 上饶县| 高台县| 武平县| 奉节县| 博客| 江西省| 汕头市| 皋兰县| 永川市| 静海县| 突泉县| 金华市| 仙居县| 闻喜县| 土默特左旗| 巴林右旗| 榆树市| 视频| 泸定县| 景泰县| 井陉县| 渭源县| 郯城县| 霸州市| 大理市| 灵川县| 沁水县| 增城市| 易门县| 偏关县| 博白县|