PHPコードの単体テストと統合テスト

WBOY
リリース: 2024-05-07 08:00:02
オリジナル
716 人が閲覧しました

PHP 単体テストおよび統合テスト ガイド 単体テスト: コードまたは関数の単一単位に焦点を当て、PHPUnit を使用して検証用のテスト ケース クラスを作成します。統合テスト: 複数のコードユニットがどのように連携して動作するかに焦点を当て、PHPUnit の setUp() メソッドと TearDown() メソッドを使用してテスト環境をセットアップおよびクリーンアップします。実際のケース: PHPUnit を使用して、データベースの作成、サーバーの起動、テストコードの作成など、Laravel アプリケーションの単体テストと統合テストを実行します。

PHP 代码单元测试与集成测试

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!