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

WBOY
Freigeben: 2024-04-19 11:33:02
Original
464 Leute haben es durchsucht

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

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
{
    // ...
}
Nach dem Login kopieren

编写测试方法

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

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

assertEquals 方法断言两个值相等。

运行测试

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

vendor/bin/phpunit
Nach dem Login kopieren

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

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

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

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

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