Heim  >  Artikel  >  Backend-Entwicklung  >  Wie schreibe ich PHP-Unit-Tests?

Wie schreibe ich PHP-Unit-Tests?

尚
Original
2019-10-21 14:33:223890Durchsuche

Wie schreibe ich PHP-Unit-Tests?

In der Windows-Entwicklungsumgebung kann PHPUnit zum Testen von PHP-Einheiten verwendet werden.

Empfohlene Lektüre: PHP-Server

PHPUnit installieren

Verwenden Sie Composer, um PHPUnit zu installieren. Weitere Installationsmethoden finden Sie unter hier

composer require --dev phpunit/phpunit ^6.2

Installieren Sie das Monolog-Protokollpaket für PHPUnit-Tests und Protokollierung.

composer require monolog/monolog

Nach der Installation können wir sehen, dass die Datei coomposer.json bereits diese beiden Erweiterungspakete enthält:

"require": { 

    "monolog/monolog": "^1.23",

   },

"require-dev": {

       "phpunit/phpunit": "^6.2"

   },

Einfache Verwendung von PHPUnit

1. Einzeldateitest

Erstellen Sie das Verzeichnis Tests, erstellen Sie eine neue Datei StackTest.php und bearbeiten Sie sie wie folgt:

<?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;
    }
}

Code-Erklärung:

  1. StackTest ist die Testklasse

  2. StackTest erbt von PHPUnitFrameworkTestCase

  3. Testmethode testPushAndPop(), die Testmethode muss sein öffentliche Berechtigungen, normalerweise beginnend mit test , oder Sie können es mit @test annotieren, um anzugeben

  4. In der Testmethode wird eine Assertionsmethode ähnlich zu AssertEquals() verwendet, um den tatsächlichen Wert abzugleichen Wert mit dem erwarteten Wert. Machen Sie eine Aussage.

Befehlszeilenausführung:

phpunit-Befehl Dateibenennung testen

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

Ausführungsergebnis:

➜  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)

Das obige ist der detaillierte Inhalt vonWie schreibe ich PHP-Unit-Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn