溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

php單元測(cè)試如何實(shí)現(xiàn)

發(fā)布時(shí)間:2020-09-17 11:15:55 來(lái)源:億速云 閱讀:190 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)php單元測(cè)試如何實(shí)現(xiàn)的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

windows開(kāi)發(fā)環(huán)境下,PHP使用單元測(cè)試可以使用PHPUnit。

推薦閱讀:php服務(wù)器

安裝PHPUnit

使用 composer 方式安裝 PHPUnit,其他安裝方式請(qǐng)看這里

composer require --dev phpunit/phpunit ^6.2

安裝 Monolog 日志包,做 phpunit 測(cè)試記錄日志用。

composer require monolog/monolog

安裝好之后,我們可以看coomposer.json 文件已經(jīng)有這兩個(gè)擴(kuò)展包了:

"require": { 

    "monolog/monolog": "^1.23",

   },

"require-dev": {

       "phpunit/phpunit": "^6.2"

   },

PHPUnit簡(jiǎn)單用法

1、單個(gè)文件測(cè)試

創(chuàng)建目錄tests,新建文件 StackTest.php,編輯如下:

<?php
/**
 * 1、composer 安裝Monolog日志擴(kuò)展,安裝phpunit單元測(cè)試擴(kuò)展包
 * 2、引入autoload.php文件
 * 3、測(cè)試案例
 *
 *
 */
namespace App\tests;
require_once __DIR__ . '/../vendor/autoload.php';
define("ROOT_PATH", dirname(__DIR__) . "/"); 
use Monolog\Logger;
use Monolog\Handler\StreamHandler; 
use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
    public function testPushAndPop()
    {
        $stack = [];
        $this->assertEquals(0, count($stack));
        array_push($stack, 'foo');
 
        // 添加日志文件,如果沒(méi)有安裝monolog,則有關(guān)monolog的代碼都可以注釋掉
        $this->Log()->error('hello', $stack);
 
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertEquals(1, count($stack)); 
        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
    }
 
    public function Log()
    {
        // create a log channel
        $log = new Logger('Tester');
        $log->pushHandler(new StreamHandler(ROOT_PATH . 'storage/logs/app.log', Logger::WARNING));
        $log->error("Error");
        return $log;
    }
}

代碼解釋?zhuān)?/p>

  1. StackTest為測(cè)試類(lèi)

  2. StackTest 繼承于 PHPUnit\Framework\TestCase

  3. 測(cè)試方法testPushAndPop(),測(cè)試方法必須為public權(quán)限,一般以test開(kāi)頭,或者你也可以選擇給其加注釋@test來(lái)表

  4. 在測(cè)試方法內(nèi),類(lèi)似于 assertEquals() 這樣的斷言方法用來(lái)對(duì)實(shí)際值與預(yù)期值的匹配做出斷言。

命令行執(zhí)行:

phpunit 命令 測(cè)試文件命名

 framework#  ./vendor/bin/phpunit tests/StackTest.php
 
// 或者可以省略文件后綴名
//  ./vendor/bin/phpunit tests/StackTest

執(zhí)行結(jié)果:

?  framework# ./vendor/bin/phpunit tests/StackTest.php
PHPUnit 6.4.1 by Sebastian Bergmann and contributors. 
.                                                                   1 / 1 (100%)
Time: 56 ms, Memory: 4.00MB
OK (1 test, 5 assertions)

感謝各位的閱讀!關(guān)于php單元測(cè)試如何實(shí)現(xiàn)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI