Heim > Backend-Entwicklung > PHP-Tutorial > Unit-Tests und Abdeckungsanalyse von PHP-Funktionen

Unit-Tests und Abdeckungsanalyse von PHP-Funktionen

WBOY
Freigeben: 2024-04-28 12:12:01
Original
827 Leute haben es durchsucht

Unit-Tests und Abdeckungsanalyse von PHP-Funktionen: Verwenden Sie PHPUnit für Unit-Tests und schreiben Sie .test.php-Dateien, um einzelne Funktionen zu isolieren und zu testen. Verwenden Sie den Befehl phpunit, um Komponententests auszuführen. Verwenden Sie phpunit --coverage-html, um die Abdeckung zu analysieren und einen Bericht zu erstellen, der getestete und ungetestete Codezeilen zeigt. PHPUnit installieren, Unit-Tests schreiben, Tests ausführen, Abdeckung analysieren, diesen Prozess mithilfe einer benutzerdefinierten Add-Funktion demonstrieren.

PHP 函数的单元测试和覆盖率分析

Einheitentests und Abdeckungsanalyse von PHP-Funktionen

Das Schreiben von Qualitätscode in PHP erfordert strenge Tests, um sicherzustellen, dass er ordnungsgemäß funktioniert und die erwarteten Ergebnisse erzielt. Unit-Tests bieten eine Möglichkeit, einzelne Funktionen oder Methoden zu isolieren und zu testen, während die Abdeckungsanalyse dabei hilft, festzustellen, welche Teile des Codes getestet wurden.

PHPUnit installieren

PHPUnit ist ein beliebtes PHP-Unit-Test-Framework. Um es zu installieren, verwenden Sie Composer:

composer require --dev phpunit/phpunit
Nach dem Login kopieren

Schreiben von Unit-Tests

Unit-Tests werden mit einer .test.php-Erweiterungsdatei geschrieben. Hier ist ein Beispiel für das Testen der Add-Funktion:

<?php

use PHPUnit\Framework\TestCase;

class AddFunctionTest extends TestCase
{
    public function testAddNumbers()
    {
        $result = add(1, 2);
        $this->assertEquals(3, $result);
    }
}
Nach dem Login kopieren

Komponententests ausführen

Komponententests mit dem phpunit-Befehl ausführen:

phpunit
Nach dem Login kopieren
Nach dem Login kopieren

Abdeckung analysieren

Phpunit bietet eine integrierte Option zum Generieren von Abdeckungsberichten:

phpunit --coverage-html
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch wird ein Abdeckungsbericht im Verzeichnis html generiert. Es wird angezeigt, welche Zeilen im Code getestet wurden und welche nicht. html 目录下生成一个覆盖率报告。它将显示代码中哪些行已被测试,哪些行尚未被测试。

实战案例

为了演示,我们创建一个自定义 add 函数,然后编写一个单元测试来测试它:

functions.php

<?php

function add(int $num1, int $num2): int
{
    return $num1 + $num2;
}
Nach dem Login kopieren

AddFunctionTest.test.php

<?php

use PHPUnit\Framework\TestCase;

class AddFunctionTest extends TestCase
{
    public function testAddNumbers()
    {
        $result = add(1, 2);
        $this->assertEquals(3, $result);
    }

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

运行单元测试:

phpunit
Nach dem Login kopieren
Nach dem Login kopieren

生成覆盖率报告:

phpunit --coverage-html
Nach dem Login kopieren
Nach dem Login kopieren

覆盖率报告将显示 add

🎜Praktischer Fall🎜🎜🎜Zur Demonstration erstellen wir eine benutzerdefinierte Add-Funktion und schreiben dann einen Komponententest, um sie zu testen: 🎜🎜🎜functions.php🎜🎜rrreee🎜🎜AddFunctionTest.test.php🎜🎜rrreee🎜Führen Sie die Einheit aus Test: 🎜rrreee🎜 Abdeckungsbericht generieren: 🎜rrreee🎜 Der Abdeckungsbericht zeigt, dass die Funktion add vollständig abgedeckt ist, was bedeutet, dass unsere Komponententests alle Codepfade abdecken. 🎜

Das obige ist der detaillierte Inhalt vonUnit-Tests und Abdeckungsanalyse von PHP-Funktionen. 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