PHP單元測試-保障程式碼正確執行的護衛神
程式碼能否正確執行是應用的關鍵,如何保證程式碼的執行就成為至關重要的事情,“對付坦克的最好工具就是另外一臺坦克”,保證程式碼的正確執行就是使用程式碼來保證,軟體的的需求是變動的,很難保證這一次的改動,會不會將引起上次需求的什麼變化。如果是測試人員發現了可以修改,但是如果部署到線上,引起的問題就會嚴重的。
單元測試就是提供一些條件,這些條件將產生一定的結果,如果結果不符就不能通過測試,不能通過測試產生的原因就是:測試程式碼有問題或者程式程式碼有問題。就需要去檢查具體的原因。
引入單元測試產生的最直接的結果就是程式碼量要比以前多,二測試程式碼的管理問題,三,測試條件的更新問題,但是這些問題在保證程式碼質量面前都顯示不是太重要。
PHP一般情況下用來做伺服器後端資源的操作,比如說資料的讀出與寫入,使用者的註冊與消費都記錄在資料庫中。所以對php業務邏輯的測試就顯的非常重要。
PHP的單元測試工具是PHPUNIT,它屬於XUNIT的類工具,PHPUNIT的部署方法有兩個,一種是通過composer進行安裝,一種是下載phar包進行安裝
單元測試命令是phpunit Test.php,然後根據顯示的資訊進行判斷是否通過測試(在命令列下)。就是這樣簡單
PHPUNIT的安裝方式大體上分為兩種,composer安裝與phar安裝這兩種
composer的安裝方式比較簡單使用方法: composer require –dev phpunit/phpunit ^6.1
或者使用phar的方式來安裝,也比較簡單,phar相當於一個壓縮包,這個壓縮包是需要依賴php才可以執行的,所以如果機器上有php的話,可以新建一個phpunit.bat檔案,並把這個檔案 的位置加入到路徑中這樣就可以直接的輸入phpunit 命令了,當然也可以不建立這樣的bat檔案,但是每次做除錯的時候,都得帶上php phpunit.phar **檔名,
bat檔案內容類似這樣
@ECHO OFF
setlocal DISABLEDELAYEDEXPANSION
SET BIN_TARGET=%~dp0/../phpunit/phpunit/phpunit
php “%BIN_TARGET%” %*
或者phpunit.cmd也可以的
echo @php “%~dp0phpunit.phar” %* > phpunit.cmd
在使用phpunit做開的過程中,一定要注意phpunit的版本,因為不同版本的phpunit的測試基類是不一樣的,例如phpunit6.1以上版本
use PHPUnitFrameworkTestCase; class StackTest extends TestCase { }
phpunit5的測試基類就是PHPUnit_Framework_TestCase
出現找不到類庫的時候,首先看一下phpunit的基類的版本是否對應,然後再檢查程式碼
對於業務型別的測試來說,業務之間存在著關聯關係,比如說使用者登入之後取得憑據,然後帶著憑據去訪問業務系統,PHPUnit使用
@depends 標註來表達依賴關係
<?php use PHPUnitFrameworkTestCase; class StackTest extends TestCase { public function testEmpty() { $stack = []; $this->assertEmpty($stack); return $stack; } /** * @depends testEmpty */ public function testPush(array $stack) { array_push($stack, `foo`); $this->assertEquals(`foo`, $stack[count($stack)-1]); $this->assertNotEmpty($stack); return $stack; } /** * @depends testPush */ public function testPop(array $stack) { $this->assertEquals(`foo`, array_pop($stack)); $this->assertEmpty($stack); } } ?>
相關文章
- Laravel 單元測試實戰(3)- 編寫整合測試確保介面和資料庫程式碼正確Laravel資料庫
- 如何執行指定的單元測試
- PHP 單元測試PHP
- unittest 單元測試框架教程 1-執行測試指令碼框架指令碼
- 寫PHP程式碼你搞過單元測試嗎PHP
- 程式碼重構與單元測試——重構1的單元測試(四)
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- Maven執行和跳過單元測試Maven
- 如何編寫優秀的測試程式碼|單元測試
- 測試你的前端程式碼 - part2(單元測試)前端
- 測試你的前端程式碼 – part2(單元測試)前端
- Angular單元測試如何只執行指定的測試用例,提高測試速度Angular
- PHP單元測試框架PHPUnit的使用PHP框架
- 使用CountDownLatch或迴圈屏障對多執行緒程式碼進行單元測試 -XebiaCountDownLatch執行緒
- PHP 單元測試與資料庫測試PHP資料庫
- [iOS單元測試系列]單元測試編碼規範iOS
- 單元測試:單元測試中的mockMock
- 使用FakeAsync對Angular非同步程式碼進行單元測試Angular非同步
- 如果利用 python 對 java 程式碼進行 單元測試?PythonJava
- 用 Mocha 和 Chai 對 JavaScript 程式碼進行單元測試AIJavaScript
- 程式碼重構與單元測試(一)
- 程式碼重構與單元測試——測試專案(二)
- 安卓單元測試 (十一):非同步程式碼怎麼測試安卓非同步
- 使用Github Copilot生成單元測試並執行Github
- .NET重構—單元測試的程式碼重構
- QTP測試指令碼的維護 - 使用Update執行模式和Maintenance執行模式QT指令碼模式AINaN
- 使用 PyHamcrest 執行健壯的單元測試REST
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 為程式碼編寫穩定的單元測試 [Go]Go
- javascript測試程式碼的執行時間程式碼例項JavaScript
- php程式daemon化的正確做法PHP
- 使用JUnit進行單元測試
- PHP Parser 簡介和應用 - 為你的程式碼自動補全單元測試PHP
- C&C++程式碼單元整合測試培訓C++
- Golang 單元測試執行 _test.go 中的某個 func 方法Golang
- 使用xUnit為.net core程式進行單元測試(4)
- 使用xUnit為.net core程式進行單元測試(3)
- 使用xUnit為.net core程式進行單元測試 -- Assert