Heim >Backend-Entwicklung >PHP-Tutorial >Wie führt man Unit-Tests mit PHP durch?

Wie führt man Unit-Tests mit PHP durch?

WBOY
WBOYOriginal
2024-04-19 11:33:02496Durchsuche

Unit-Tests prüfen die kleinsten Komponenten der Software (z. B. Funktionen, Methoden). PHP kann über das PHPUnit-Framework einem Unit-Test unterzogen werden. Installieren Sie zuerst PHPUnit, erstellen Sie dann eine Testklasse (erweitert von TestCase), schreiben Sie dann eine Testmethode, die mit „test“ beginnt, und behaupten Sie mit „asserEquals“, dass zwei Werte gleich sind. In einem praktischen Fall testet StringUtilsTest.php die Methode ucfirst() der StringUtils-Klasse; Mocks werden verwendet, um Code zu isolieren, beispielsweise um Datenbankabhängigkeiten zu simulieren. Der Beispielcode zeigt, wie Sie mit PHPUnit die Methode HttpRequest::get() testen, eine Scheinversion der Abhängigkeit über ein Scheinobjekt erstellen, den Scheinrückgabewert festlegen und den Aufruf der Dienstmethode überprüfen.

如何使用 PHP 进行单元测试?

Unit-Testing mit PHP

Unit-Testing ist eine Softwaretesttechnik, die die kleinste unabhängige Komponente (Einheit) von Software untersucht – eine Funktion, Methode oder Klasse.

PHPUnit installieren

PHPUnit ist ein beliebtes PHP-Unit-Test-Framework. Um es zu installieren, führen Sie den folgenden Composer-Befehl aus:

composer require --dev phpunit/phpunit

Testklassen erstellen

Jede Testklasse wird mit dem Suffix „Test“ benannt und stammt aus der Klasse PHPUnitFrameworkTestCase: Geschrieben von PHPUnitFrameworkTestCase 类:

class SomeClassTest extends PHPUnit\Framework\TestCase
{
    // ...
}

编写测试方法

每个测试方法都以 "test" 开头,后面跟着要测试的功能的名称:

public function testAddNumbers()
{
    $result = someFunction(1, 2);
    $this->assertEquals(3, $result);
}

assertEquals 方法断言两个值相等。

运行测试

要运行测试,请使用 PHPUnit 命令:

vendor/bin/phpunit

实战案例:测试字符串工具类

考虑一个名为 StringUtils 的辅助类,它提供一个 ucfirst

class StringUtilsTest extends PHPUnit\Framework\TestCase
{
    public function testUcfirst()
    {
        $string = 'hello world';
        $result = StringUtils::ucfirst($string);
        $this->assertEquals('Hello world', $result);
    }
}

Testmethoden

Jede Testmethode beginnt mit „test“, gefolgt vom Namen der zu testenden Funktion:

class HttpServiceTest extends TestCase
{
    public function testGetRequest()
    {
        $request = $this->getMockBuilder(HttpRequest::class)
            ->onlyMethods(['get'])
            ->getMock();

        $request->method('get')
            ->with('name')
            ->willReturn('John Doe');

        $service = new HttpService($request);

        $this->assertEquals('John Doe', $service->getRequest('name'));
    }
}
Die Methode assertEquals stellt sicher, dass zwei Werte gleich sind.

Tests ausführen

Um Tests auszuführen, verwenden Sie den PHPUnit-Befehl: rrreee

Praktisches Beispiel: Testen der String Utilities-Klasse

🎜🎜Betrachten Sie eine Hilfsklasse namens StringUtils, die einen bereitstellt ucfirst-Methode zum Großschreiben des ersten Buchstabens einer Zeichenfolge. Wir können einen Unit-Test schreiben, um diesen Ansatz zu testen: 🎜🎜🎜StringUtilsTest.php🎜🎜rrreee🎜🎜Mocks verwenden🎜🎜🎜Mocks ermöglichen es Ihnen, das Verhalten externer Abhängigkeiten zu simulieren, um Ihren Code in Unit-Tests zu isolieren. Wenn Sie beispielsweise eine Klasse testen, die auf einer Datenbank basiert, können Sie einen Mock verwenden, um die Datenbank zu simulieren, ohne sie tatsächlich abzufragen. 🎜🎜🎜Beispielcode: Testen der getRequest()-Methode mit PHPUnit🎜🎜rrreee🎜Dieses Beispiel zeigt, wie man mit einem Scheinobjekt eine Scheinversion einer Abhängigkeit erstellt, wie man Scheinrückgabewerte festlegt und wie man Methodenaufrufe überprüft Ein Dienst. 🎜

Das obige ist der detaillierte Inhalt vonWie führt man Unit-Tests mit PHP durch?. 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