您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關php單元測試如何實現的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
windows開發環境下,PHP使用單元測試可以使用PHPUnit。
推薦閱讀:php服務器
安裝PHPUnit
使用 composer 方式安裝 PHPUnit,其他安裝方式請看這里
composer require --dev phpunit/phpunit ^6.2
安裝 Monolog 日志包,做 phpunit 測試記錄日志用。
composer require monolog/monolog
安裝好之后,我們可以看coomposer.json 文件已經有這兩個擴展包了:
"require": { "monolog/monolog": "^1.23", }, "require-dev": { "phpunit/phpunit": "^6.2" },
PHPUnit簡單用法
1、單個文件測試
創建目錄tests,新建文件 StackTest.php,編輯如下:
<?php /** * 1、composer 安裝Monolog日志擴展,安裝phpunit單元測試擴展包 * 2、引入autoload.php文件 * 3、測試案例 * * */ 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'); // 添加日志文件,如果沒有安裝monolog,則有關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; } }
代碼解釋:
StackTest為測試類
StackTest 繼承于 PHPUnit\Framework\TestCase
測試方法testPushAndPop(),測試方法必須為public權限,一般以test開頭,或者你也可以選擇給其加注釋@test來表
在測試方法內,類似于 assertEquals() 這樣的斷言方法用來對實際值與預期值的匹配做出斷言。
命令行執行:
phpunit 命令 測試文件命名
framework# ./vendor/bin/phpunit tests/StackTest.php // 或者可以省略文件后綴名 // ./vendor/bin/phpunit tests/StackTest
執行結果:
? 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)
感謝各位的閱讀!關于php單元測試如何實現就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。