thinkphp5.0 是 tp 發展路線第一個支持 composer 的。tp 有自己的載入機制,composer 也有自己的載入機制。
官方提供了 think-testing 組件可以通過 composer require topthink/think-testing 1.* 安裝,但我對這個測試組件不是很滿意,原因是它每個測試都是模擬成 http 請求。這也就意味著對于一些特定函數,還得封裝到控制器中或者路由,該控制器還得控制它生產環境不能對外開放。thinkphp5.0 是 tp 發展路線第一個支持 composer 的。tp 有自己的載入機制,composer 也有自己的載入機制。
PHPUnit 是一個用PHP編程語言開發的開源軟件,是一個單元測試框架。PHPUnit由Sebastian Bergmann創建,源于Kent Beck的SUnit,是xUnit家族的框架之一。
單元測試是對單獨的代碼對象進行測試的過程,比如對函數、類、方法進行測試。單元測試可以使用任意一段已經寫好的測試代碼,也可以使用一些已經存在的測試框架,比如JUnit、PHPUnit或者Cantata++,單元測試框架提供了一系列共同、有用的功能來幫助人們編寫自動化的檢測單元,例如檢查一個實際的值是否符合我們期望的值的斷言。單元測試框架經常會包含每個測試的報告,以及給出你已經覆蓋到的代碼覆蓋率。
總之一句話,使用 phpunit 進行自動測試,會使你的代碼更健壯,減少后期維護的成本,也是一種比較標準的規范,現如今流行的PHP框架都帶了單元測試,如Laraval,Symfony,Yii2等,單元測試已經成了標配。
另外,單元測試用例是通過命令操控測試腳本的,而不是通過瀏覽器訪問URL的。
項目內安裝PHPUnit
使用 composer 方式安裝 PHPUnit 項目根目錄下執行下面這段代碼
composer require phpunit/phpunit
自動下載適配版本 我下載的時4.8.36


將 F:\wamp\wamp\www\tp5\vendor\bin 添加加到 PATH 環境變量中(這樣PHPunit全局生效)

PHPUnit簡單用法
1、單個文件測試
根目錄下創建目錄tests

新建文件 FirstTest.php,編輯如下:
?php
/**
* 1、引入autoload.php文件
* 2、測試案例
*
*
*/
namespace App\tests;
require_once __DIR__ . '/../vendor/autoload.php';
use PHPUnit\Framework\TestCase;
class FirstTest extends TestCase
{
public function testTure()
{
$stack = [];
$this->assertEquals(0, count($stack));
}
}
代碼解釋:
FirstTest為測試類FirstTest繼承于 PHPUnit\Framework\TestCase測試方法testTure(),測試方法必須為public權限,一般以test開頭,或者你也可以選擇給其加注釋@test來表在測試方法內,類似于 assertEquals() 這樣的斷言方法用來對實際值與預期值的匹配做出來以此判斷方法是否正確
命令行執行:
tests目錄下 執行 >phpunit FirstTest 命令 測試文件命名

測試項目內方法
tp5項目下的控制器在 F:\wamp\wamp\www\tp5\application\index\controller 文件夾下 寫一個簡單的方法

在tests內寫一個IndexTest.php
?php
namespace App\tests;
require_once __DIR__ . '/../vendor/autoload.php';
use PHPUnit\Framework\TestCase;
use app\index\controller\Index;
class IndexTest extends TestCase
{
public function testSum()
{
$obj = new Index;
$this->assertEquals(6, $obj->index(2,3));
}
}
執行后的結果 成功!

如果我在index.php,和IndexTest.php都故意寫錯


返回結果 會有錯誤位置

其他用法
其他用法請參考官網:PHPUnit中國官網
您可能感興趣的文章:- PHPUnit 單元測試安裝與使用入門教程
- PHP單元測試配置與使用方法詳解
- PHPUnit + Laravel單元測試常用技能
- PHP使用phpunit進行單元測試示例
- 使用PHPUnit進行單元測試并生成代碼覆蓋率報告的方法
- PHPStorm中如何對nodejs項目進行單元測試詳解
- PHP單元測試框架PHPUnit用法詳解
- thinkPHP框架單元測試庫tpunit用法示例
- 淺談如何提高PHP代碼質量之單元測試