ホームページ  >  記事  >  バックエンド開発  >  PHP単体テストの書き方

PHP単体テストの書き方

尚
オリジナル
2019-10-21 14:33:223822ブラウズ

PHP単体テストの書き方

Windows 開発環境では、PHP 単体テストに PHPUnit を使用できます。

推奨書籍: php サーバー

PHPUnit のインストール

コンポーザーを使用して PHPUnit をインストールします。他のインストール方法については、を参照してください。 here

composer require --dev phpunit/phpunit ^6.2

phpunit のテストとログ記録用に Monolog ログ パッケージをインストールします。

composer require monolog/monolog

インストール後、composer.json ファイルにはすでに次の 2 つの拡張パッケージが含まれていることがわかります。

"require": { 

    "monolog/monolog": "^1.23",

   },

"require-dev": {

       "phpunit/phpunit": "^6.2"

   },

PHPUnit の簡単な使用法

##1. 単一ファイルのテスト

ディレクトリ testing を作成し、新しいファイル StackTest.php を作成し、次のように編集します:

<?php
/**
 * 1、composer 安装Monolog日志扩展,安装phpunit单元测试扩展包
 * 2、引入autoload.php文件
 * 3、测试案例
 *
 *
 */
namespace App\tests;
require_once __DIR__ . &#39;/../vendor/autoload.php&#39;;
define("ROOT_PATH", dirname(__DIR__) . "/"); 
use Monolog\Logger;
use Monolog\Handler\StreamHandler; 
use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
    public function testPushAndPop()
    {
        $stack = [];
        $this->assertEquals(0, count($stack));
        array_push($stack, 'foo');
 
        // 添加日志文件,如果没有安装monolog,则有关monolog的代码都可以注释掉
        $this->Log()->error('hello', $stack);
 
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertEquals(1, count($stack)); 
        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
    }
 
    public function Log()
    {
        // create a log channel
        $log = new Logger('Tester');
        $log->pushHandler(new StreamHandler(ROOT_PATH . 'storage/logs/app.log', Logger::WARNING));
        $log->error("Error");
        return $log;
    }
}
コードの説明:

  1. StackTest はテスト クラスです

  2. StackTest は PHPUnit\Framework\TestCase

  3. テスト メソッド testPushAndPop() を継承します。テスト メソッドにはパブリック権限が必要です。通常は test で始まります。または、

  4. #テスト メソッド内で、assertEquals() に似たアサーション メソッドを示すために @test アノテーションを付けることもできます。実際の値と期待値の一致を比較するために使用されます。
  5. コマンドライン実行:

phpunitコマンドテストファイル名

 framework#  ./vendor/bin/phpunit tests/StackTest.php
 
// 或者可以省略文件后缀名
//  ./vendor/bin/phpunit tests/StackTest

実行結果:

➜  framework# ./vendor/bin/phpunit tests/StackTest.php
PHPUnit 6.4.1 by Sebastian Bergmann and contributors. 
.                                                                   1 / 1 (100%)
Time: 56 ms, Memory: 4.00MB
OK (1 test, 5 assertions)

以上がPHP単体テストの書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。