Heim  >  Artikel  >  Backend-Entwicklung  >  Unit-Tests und Code-Coverage mit PHP und PHPUnit

Unit-Tests und Code-Coverage mit PHP und PHPUnit

PHPz
PHPzOriginal
2023-06-25 13:12:101241Durchsuche

Mit der Entwicklung der Softwareentwicklung werden sich immer mehr Entwickler der Bedeutung von Unit-Tests bewusst. Unit-Tests sind eine gängige Testmethode in der Softwareentwicklung, die die Korrektheit und Stabilität des Codes sicherstellt, indem sie die Korrektheit eines einzelnen Funktionsmoduls (auch „Einheit“ genannt) testet. In diesem Artikel erfahren Sie, wie Sie mit PHP und PHPUnit Unit-Tests und Code-Abdeckung erreichen.

PHPUnit ist ein Open-Source-Testframework zum Testen von PHP-Code. Es unterstützt mehrere Testtypen, darunter Unit-Tests, Funktionstests und Integrationstests. In diesem Artikel konzentrieren wir uns auf Unit-Tests.

Warum Unit-Tests und Code-Coverage?

Bei der Entwicklung von Software versuchen wir normalerweise, unseren Code so oft wie möglich zu testen. Unit-Tests sind eine effizientere Testmethode, mit der während des Entwicklungsprozesses kontinuierlich getestet werden kann, um die Richtigkeit des Codes sicherzustellen. Darüber hinaus bietet es die folgenden Vorteile:

  1. Verbesserung der Wartbarkeit des Codes: Durch Unit-Tests können Sie die Richtigkeit des Codes nach der Änderung schnell überprüfen, um sicherzustellen, dass die ursprünglichen Funktionen nach der Änderung nicht beschädigt werden.
  2. Verbesserung der Robustheit des Codes: Durch das Testen jeder Einheit können potenzielle Probleme und Fehler im Code entdeckt werden, sodass diese Probleme im Voraus behoben werden können und Probleme in der Produktionsumgebung vermieden werden.
  3. Reduzieren Sie Erweiterungs- und Refactoring-Kosten: Mithilfe von Unit-Tests können Sie Probleme bei der Änderung vorhandenen Codes schnell finden und so Änderungen in der Codebasis effektiver verwalten.

Die Codeabdeckung ist eine Möglichkeit, die Testabdeckung zu bewerten. Hier erfahren Sie, wie gut Ihr Code getestet wurde. Wenn Ihre Testabdeckung beispielsweise 60 % beträgt, bedeutet dies, dass Ihr Testcode 60 % des Quellcodes abdeckt. Mit der Codeabdeckung können Sie messen, ob die Qualität Ihrer Software hoch ist und ob Sie mehr Testfälle benötigen.

Starten Sie Unit-Tests mit PHPUnit

Bevor Sie fortfahren, müssen Sie sicherstellen, dass PHPUnit installiert ist. Kann über Composer installiert werden. Erstellen Sie eine Composer.json-Datei in Ihrem Projektverzeichnis und fügen Sie die PHPUnit-Abhängigkeit hinzu:

{
  "require-dev": {
    "phpunit/phpunit": "^7.0"
  }
}

Sie können PHPUnit installieren, indem Sie den folgenden Befehl ausführen:

composer install --dev

Als Nächstes zeigen wir, wie Sie einen einfachen Komponententest schreiben. Stellen Sie sich vor, Sie schreiben eine PHP-Klasse namens „Calculator“, die grundlegende arithmetische Operationen ausführt. Hier ist der Code:

class Calculator {
    public function add($a, $b) {
        return $a + $b;
    }

    public function subtract($a, $b) {
        return $a - $b;
    }
}

Schreiben Sie nun eine Testklasse namens „CalculatorTest“, die unsere Calculator-Klasse testet:

use PHPUnitFrameworkTestCase;

class CalculatorTest extends TestCase {
    public function testAdd() {
        $calculator = new Calculator();
        $result = $calculator->add(1, 2);
        $this->assertEquals(3, $result);
    }

    public function testSubtract() {
        $calculator = new Calculator();
        $result = $calculator->subtract(2, 1);
        $this->assertEquals(1, $result);
    }
}

Im obigen Code haben wir eine der grundlegenden Testmethoden verwendet, die von PHPUnit bereitgestellt werden – attachmentEquals(). Es vergleicht den Testwert mit dem erwarteten Wert und löst eine Ausnahme aus, wenn sie nicht gleich sind.

Führen Sie nun die PHPUnit-Tests aus:

./vendor/bin/phpunit CalculatorTest.php

Wenn alle Tests erfolgreich sind, wird die folgende Ausgabe angezeigt:

PHPUnit 7.5.1 by Sebastian Bergmann and contributors.

..

Time: 42 ms, Memory: 4.00 MB

OK (2 tests, 2 assertions)

Beachten Sie, dass in diesem Beispiel ein kleiner Trick verwendet wird, der darin besteht, gleichzeitig die Calculator-Klasse zu definieren die gleiche Datei CalculatorTest.php und die entsprechende Testklasse CalculatorTest.

Verstehen Sie die grundlegenden Testmethoden von PHPUnit

PHPUnit bietet eine Vielzahl von Testmethoden. Im Folgenden finden Sie Anwendungsbeispiele für einige der grundlegenden Methoden:

  1. assertEquals($expected, $actual, $message): Vergleichen Sie den erwarteten Wert und der tatsächliche Wert gleich.
  2. assertTrue($value, $message): Bestimmen Sie, ob ein Ausdruck wahr ist.
  3. assertFalse($value, $message): Bestimmen Sie, ob ein Ausdruck falsch ist.
  4. assertNull($value, $message): Bestimmen Sie, ob ein Wert null ist.
  5. assertSame($expected, $actual, $message): Vergleicht, ob der erwartete Wert und der tatsächliche Wert vollständig gleich sind (einschließlich Typ).
  6. assertInstanceOf($expected, $actual, $message): Bestimmen Sie, ob ein Objekt eine Instanz einer bestimmten Klasse ist.

Weitere Testmethoden für PHPUnit finden Sie in der Dokumentation.

Testen der Codeabdeckung mit PHPUnit

Wir haben gesehen, wie man PHPUnit für Unit-Tests verwendet. Lassen Sie uns nun verstehen, wie Sie PHPUnit zum Testen der Codeabdeckung verwenden.

Um eine Codeabdeckung zu erreichen, müssen wir beim Ausführen von PHPUnit die Option --coverage-html hinzufügen. Es wird ein Bericht zur HTML-Codeabdeckung erstellt. Führen Sie einfach den folgenden Befehl aus:

./vendor/bin/phpunit --coverage-html reports tests

Dieser Befehl führt alle Testfälle im Testverzeichnis unseres Projekts aus und generiert nach der Ausführung einen Codeabdeckungsbericht im Berichtsverzeichnis.

Danach können Sie den HTML-Bericht in Ihrem Browser öffnen, um die Quellcodeabdeckung anzuzeigen.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie man PHPUnit für Unit-Tests und Code-Abdeckung verwendet. Mit Unit-Tests und Code-Abdeckung können Sie die Projektqualität und -stabilität verbessern und die Kosten für Skalierung und Refactoring senken.

Denken Sie beim Schreiben von PHP-Code daran, gute Unit-Tests zu schreiben. Ein guter Komponententest wird verwendet, um die Codekorrektheit zu überprüfen, Regressionsfehler zu verhindern und die Coderobustheit sicherzustellen. Durch das Schreiben guter Testfälle können Sie Probleme frühzeitig erkennen und beheben, bevor sie auftreten.

Das obige ist der detaillierte Inhalt vonUnit-Tests und Code-Coverage mit PHP und PHPUnit. 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