PHP 單元和整合測試指南單元測試:專注於單一程式碼單元或函數,使用 PHPUnit 建立測試案例類別進行驗證。整合測試:專注於多個程式碼單元協同工作的情況,使用 PHPUnit 的 setUp() 和 tearDown() 方法設定和清理測試環境。實戰案例:使用 PHPUnit 在 Laravel 應用程式中進行單元和整合測試,包括建立資料庫、啟動伺服器以及編寫測試程式碼。
PHP 程式碼單元測試與整合測試
簡介
單元測試和整合測試是軟體開發中至關重要的測試類型,它可以確保程式碼在不同層級上的正確性和可靠性。本文將指導您使用 PHPUnit 進行 PHP 程式碼的單元測試和整合測試。
單元測試
單元測試關注程式碼的單一單元或函數。為了建立單元測試,您需要使用 PHPUnit 建立測試案例類別。讓我們使用一個簡單的範例:
<?php class SumTest extends PHPUnit_Framework_TestCase { public function testSum() { $a = 2; $b = 3; $result = $a + $b; $this->assertEquals($result, 5); } }
在這個測試中,testSum()
方法驗證了 $a $b
是否等於 5。
整合測試
整合測試關注程式碼的多個單元共同工作的正確性。對於整合測試,您需要使用 PHPUnit 的 setUp()
和 tearDown()
方法來設定和清除測試環境。讓我們舉一個簡單的範例:
<?php class UserServiceTest extends PHPUnit_Framework_TestCase { protected $userService; public function setUp() { $this->userService = new UserService(); } public function testGetUser() { $user = $this->userService->getUser(1); $this->assertEquals($user->getName(), 'John Doe'); } public function tearDown() { unset($this->userService); } }
在這個測試中,我們先在 setUp()
方法中設定使用者服務。然後,我們呼叫 getUser()
方法,並驗證傳回的使用者名稱是否正確。最後,我們在 tearDown()
方法中清理環境。
實戰案例
以下是使用 PHPUnit 在 Laravel 應用中進行單元和整合測試的實戰案例。
建立一個測試環境
# 创建一个名为 "testing" 的数据库 php artisan migrate --database=testing # 启动 PHP 内置服务器 php artisan serve
編寫單元測試
# tests/Feature/UserTest.php namespace Tests\Feature; use Tests\TestCase; class UserTest extends TestCase { public function testCreateUser() { $response = $this->post('/user', [ 'name' => 'John Doe', 'email' => 'john@example.com', 'password' => 'password', ]); $response->assertStatus(201); } }
編寫整合測試
# tests/Feature/UserServiceTest.php namespace Tests\Feature; use Tests\TestCase; class UserServiceTest extends TestCase { public function testGetUser() { $user = \App\Models\User::factory()->create(); $response = $this->get('/user/' . $user->id); $response->assertStatus(200); $response->assertJson(['name' => $user->name]); } }
執行測試
# 运行单元测试 phpunit tests/Unit # 运行集成测试 phpunit tests/Feature
以上是PHP 程式碼單元測試與整合測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!