ホームページ >バックエンド開発 >PHPチュートリアル >PHPコードの単体テストと統合テスト
PHP 単体テストおよび統合テスト ガイド 単体テスト: コードまたは関数の単一単位に焦点を当て、PHPUnit を使用して検証用のテスト ケース クラスを作成します。統合テスト: 複数のコードユニットがどのように連携して動作するかに焦点を当て、PHPUnit の setUp() メソッドと TearDown() メソッドを使用してテスト環境をセットアップおよびクリーンアップします。実際のケース: PHPUnit を使用して、データベースの作成、サーバーの起動、テストコードの作成など、Laravel アプリケーションの単体テストと統合テストを実行します。
PHP コードの単体テストと統合テスト
はじめに
単体テストと統合テストは、ソフトウェア開発における重要な種類のテストであり、コードの正確性と信頼性をさまざまなレベルで保証します。この記事では、PHP コードの単体テストと統合テストに PHPUnit を使用する方法を説明します。
単体テスト
単体テストは、コードの単一のユニットまたは関数に焦点を当てます。単体テストを作成するには、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 中国語 Web サイトの他の関連記事を参照してください。