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

Wie schreibe ich PHP-Unit-Tests?

Freigeben: 2023-02-27 16:44:01
Original
3943 Leute haben es durchsucht

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
Nach dem Login kopieren

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

composer require monolog/monolog
Nach dem Login kopieren

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"

   },
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage