So testen Sie PHP-Code mit PHPUnit (2024)

/ #PHP
So testen Sie PHP-Code mit PHPUnit (1)
Zubair Idris Aweda
So testen Sie PHP-Code mit PHPUnit (2)

Es gibt viele verschiedene Möglichkeiten, Ihre Softwareanwendung zu testen, und Unit-Tests sind ein wichtiger Aspekt.

Was ist also ein Unit-Test und wie kann man ihn durchführen? Das und mehr erfahren Sie in diesem Artikel.

Was ist Unit-Testing?

Unit-Testing ist ein Softwareentwicklungsprozess, bei dem die kleinsten testbaren Teile einer Anwendung, sogenannte Units, einzeln und unabhängig auf den Prozessbetrieb untersucht werden. -SucheSoftwareQualität

Grundsätzlich bedeutet Unit-Test, dass Sie Ihre Anwendung in ihre einfachsten Teile zerlegen und diese kleinen Teile testen, um sicherzustellen, dass jeder Teil fehlerfrei (und sicher) ist.

Diese Tests werden von Softwareentwicklern im Rahmen ihres Entwicklungsprozesses automatisiert und geschrieben. Dies ist ein sehr wichtiger Schritt während der Entwicklung, da er Entwicklern hilft, bessere Anwendungen mit weniger Fehlern zu erstellen.

Was ist PHPUnit?

Sie können Unit-Tests in PHP mit durchführenPHPUnit, ein programmiererorientiertes Testframework für PHP. PHPUnit ist eine Instanz der xUnit-Architektur für Unit-Test-Frameworks. Die Installation und der Einstieg sind sehr einfach.

PHPUnit-Installation

Sie können PHPUnit global auf Ihrem Server installieren. Sie können es mit Composer auch lokal, projektbezogen und zur Entwicklungszeit als Abhängigkeit zu Ihrem Projekt installieren. In diesem Artikel wird erläutert, wie Sie es projektweise verwenden.

Erstellen und initiieren Sie zunächst ein neues Projekt mit Composer mit den folgenden Befehlen:

$ mkdir Testprojekt$ cd Testprojekt$ Composer Init

Der erste Befehl erstellt einen Ordner in Ihrem aktuellen Verzeichnis.Testprojektund der zweite Befehl bewegt sich hinein. Der letzte Befehl startet eine interaktive Shell.

So testen Sie PHP-Code mit PHPUnit (3)

Befolgen Sie die Eingabeaufforderung und geben Sie die erforderlichen Details ein (die Standardwerte sind in Ordnung). Sie können die Projektbeschreibung, den Namen des Autors (oder der Namen der Mitwirkenden), die Mindeststabilität für Abhängigkeiten, den Projekttyp und die Lizenz festlegen und Ihre Abhängigkeiten definieren.

Sie können den Teil mit den Abhängigkeiten überspringen, da wir keine Abhängigkeiten installieren. PHPUnit soll ein seinEntwicklerabhängigkeitdenn das Testen als Ganzes sollte nur während der Entwicklung erfolgen.

Nun, wenn die Eingabeaufforderung fragtMöchten Sie Ihre Entwicklungsabhängigkeiten (require-dev) interaktiv definieren [Ja]?, drücken Sie die Eingabetaste, um zu akzeptieren. Geben Sie dann einphpunit/phpunitum PHPUnit als zu installierenEntwicklerabhängigkeit.

Akzeptieren Sie die anderen Standardeinstellungen und fahren Sie mit der Generierung fortComposer.jsonDatei. Die generierte Datei sollte derzeit so aussehen:

{ "name": "zubair/test-project", "require-dev": { "phpunit/phpunit": "^9.5" }, "autoload": { "psr-4": { "Zubair\\TestProject\ \": "src/" } }, "authors": [ { "name": "Idris Aweda Zubair", "email": "zubairidrisaweda@gmail.com" } ], "require": {}}

Um zu erfahren, wie Sie PHPUnit global auf Ihrem Server installieren, lesen SieHier.

So schreiben Sie Tests in PHPUnit

Das Schreiben von Tests in PHPUnit ist recht einfach. Hier sind ein paar Konventionen, um Ihnen den Einstieg zu erleichtern:

  • Um eine Klasse in PHP zu testen, erstellen Sie eine Testklasse, die nach dieser Klasse benannt ist. Zum Beispiel, wenn ich so etwas hätteBenutzerKlasse würde die Testklasse benannt werdenBenutzertest.
  • Die Testklasse,Benutzertest, wird normalerweise das erbenPHPUnit\Framework\TestCaseKlasse.
  • Einzelne Tests der Klasse sind öffentliche Methoden mit dem Namenprüfenals Präfix. Zum Beispiel zum Testen von asag HalloMethode auf derBenutzerKlasse wird die Methode benannttestSayHallo.
  • Beispielsweise innerhalb der TestmethodetestSayHallo, verwenden Sie die Methode von PHPUnit wiebehauptenSameum zu sehen, dass eine Methode einen erwarteten Wert zurückgibt.

Eine beliebte Konvention besteht darin, alle Tests in einem zu habenTestsVerzeichnis und den gesamten Quellcode imsrcVerzeichnis.

PHPUnit-Testbeispiel

Zum besseren Verständnis dieses Artikels finden Sie hier ein BeispielBenutzerKlasse mit einfachen Methoden, die getestet werden:

age = $age; $this->name = $name; } öffentliche Funktion tellName(): string { return „My name is“ . $this->name . „.“; } öffentliche Funktion tellAge(): string { return „I am“ . $this->age . „Jahre alt.“; } öffentliche Funktion addFavoriteMovie(string $movie): bool { $this->favorite_movies[] = $movie; return true; } public function removeFavoriteMovie(string $movie): bool { if (!in_array($movie, $this->favorite_movies)) throw new InvalidArgumentException("Unknown movie: " . $movie); unset($this->favorite_movies[array_search($movie, $this->favorite_movies)]); return true; }}

Diese Benutzerklasse könnte die seinBenutzerKlasse in Ihrer Film-Streaming-Anwendung. Der Benutzer verfügt über einen Namen, ein Alter und eine Liste mit Lieblingsfilmen, die aktualisiert werden können. Für den Rest des Artikels werden wir testen, ob alle diese Funktionen wie erwartet funktionieren.

Ein ... kreierenBenutzertestKlasse in derTestsOrdner. Fügen Sie dies ein, um zu beginnen:

Testkonstrukteur

Normalerweise würden Sie das nicht testen__bauenMethode. Da wir darin jedoch Werte festlegen, ist es nur sinnvoll, sicherzustellen, dass die Werte korrekt festgelegt werden.

Dies scheint eine sehr kleine Sache zu sein, die es zu testen gilt, aber das ist der Sinn von Unit-Tests – sicherzustellen, dass die kleinsten Teile Ihrer Anwendung wie erwartet funktionieren.

Ein ... kreierentestClassConstructorMethode zum Testen des Konstruktors:

öffentliche Funktion testClassConstructor(){ $user = new User(18, 'John'); $this->assertSame('John', $user->name); $this->assertSame(18, $user->age); $this->assertEmpty($user->favorite_movies);}

Machen wir jetzt eine kurze Pause, um zu sehen, wie die Tests durchgeführt werden.

So führen Sie Tests in PHPUnit durch

Sie können alle Tests in einem Verzeichnis ausführen, indem Sie die PHPUnit-Binärdatei verwenden, die in Ihrem Herstellerordner installiert ist.

$ ./vendor/bin/phpunit --verbose Tests

Sie können auch einen einzelnen Test ausführen, indem Sie den Pfad zur Testdatei angeben.

$ ./vendor/bin/phpunit --verbose tests/UserTest.php

Sie verwenden die--verboseFlag, um weitere Informationen zum Teststatus zu erhalten.

Jetzt können wir den Test ausführen und die Ausgabe sehen:

So testen Sie PHP-Code mit PHPUnit (4)

Die Ausgabe zeigt, dass wir einen Test ausgeführt und darin drei Behauptungen aufgestellt haben. Wir sehen auch, wie lange die Ausführung des Tests gedauert hat und wie viel Speicher bei der Ausführung des Tests verbraucht wurde.

Diese Behauptungen werden von PHPUnit verwendet, um die von den Methoden zurückgegebenen Werte mit ihrem erwarteten Wert zu vergleichen.

Dieses Beispiel verwendetbehauptenSameum zu überprüfen, ob dieNameUndAlterDie Eigenschaften des Benutzerobjekts stimmen mit den eingegebenen Werten überein. Es nutzt auchbehauptenEmptyum zu überprüfen, ob dieLieblingsfilmeArray ist leer.

Eine Liste aller dieser Behauptungen finden Sie in den Dokumenten von PHPUnitHier.

Bearbeiten Sie den Code, um zu prüfen, ob das Benutzeralter mit dem übereinstimmt21.

öffentliche Funktion testClassConstructor(){ $user = new User(18, 'John'); $this->assertSame('John', $user->name); $this->assertSame(21, $user->age); $this->assertEmpty($user->favorite_movies);}

Wenn Sie den Test dieses Mal erneut ausführen, erhalten Sie folgende Ausgabe:

So testen Sie PHP-Code mit PHPUnit (5)

Die Ausgabe zeigt nun, dass wir 1 Test mit 2 erfolgreichen Behauptungen und auch einer fehlgeschlagenen durchgeführt haben. Wir können eine Erklärung des Fehlers sehen, die den erwarteten Wert, den erhaltenen Wert und die Zeile anzeigt, aus der der Fehler stammt.

Testen Sie testName und tellAge

Als nächstes können wir das testenTestnameMethode. Diese Methode teilt den Namen eines Benutzers als Satz mit. Wir können also den Test schreiben, um Folgendes zu überprüfen:

  • Wenn der zurückgegebene Wert eine Zeichenfolge ist.
  • Wenn die zurückgegebene Zeichenfolge den Namen des Benutzers enthält (mit oder ohne Berücksichtigung der Groß-/Kleinschreibung).
öffentliche Funktion testTellName(){ $user = new User(18, 'John'); $this->assertIsString($user->tellName()); $this->assertStringContainsStringIgnoringCase('John', $user->tellName());}

Der Test verwendet die BehauptungenbehauptenIsStringUndbehauptenStringContainsStringIgnoringCaseum zu überprüfen, ob der Rückgabewert ein String ist und ob er den String enthältJohn, bzw.

DertestAgeMethode ist sehr ähnlichTestnameund verwendet die gleiche Logik. Der Test ähnelt dem vorherigen:

öffentliche Funktion testTellAge(){ $user = new User(18, 'John'); $this->assertIsString($user->tellAge()); $this->assertStringContainsStringIgnoringCase('18', $user->tellAge());}

Testen Sie addFavoriteMovie

Auch diese Methode können wir testen. Diese Methode fügt einen Film zur Filmliste hinzu. Um es zu testen, können wir prüfen, ob der neu hinzugefügte Film in der Liste enthalten ist und ob sich die Anzahl der Elemente in der Liste tatsächlich erhöht hat.

Letzteres dient der Bestätigung, dass keine Elemente verschoben werden. Da die Funktion am Ende einen Wert zurückgibt, können wir außerdem überprüfen, ob dieser Wert korrekt ist.

öffentliche Funktion testAddFavoriteMovie(){ $user = new User(18, 'John'); $this->assertTrue($user->addFavoriteMovie('Avengers')); $this->assertContains('Avengers', $user->favorite_movies); $this->assertCount(1, $user->favorite_movies);}

Hier verwenden wir einige neue Behauptungen –behauptenTrue,behauptenContains, UndAssertCount– um zu überprüfen, ob der zurückgegebene Wert wahr ist, ob er die neu hinzugefügte Zeichenfolge enthält und ob das Array jetzt ein Element enthält.

Testen Sie „removeFavoriteMovie“.

Abschließend können wir testen, ob die Methode zum Entfernen eines Films funktioniert.

öffentliche Funktion testRemoveFavoriteMovie(){ $user = new User(18, 'John'); $this->assertTrue($user->addFavoriteMovie('Avengers')); $this->assertTrue($user->addFavoriteMovie('Justice League')); $this->assertTrue($user->removeFavoriteMovie('Avengers')); $this->assertNotContains('Avengers', $user->favorite_movies); $this->assertCount(1, $user->favorite_movies);}

Hier fügen wir der Liste einige Filme hinzu. Dann entfernen wir einen davon und bestätigen, dass die Funktion „true“ zurückgegeben hat. Als nächstes bestätigen wir die Entfernung, indem wir prüfen, ob der Wert nicht mehr in der Liste enthalten ist. Abschließend bestätigen wir, dass wir nur einen Film in der Liste haben, statt zwei.

Abschluss

Jetzt wissen Sie, wie Sie PHPUnit in Ihren Projekten einrichten und testen und sicherstellen, dass Sie erstklassige Software erstellen. Den gesamten Code für diesen Artikel finden SieHier.

Wenn Sie Fragen oder relevante Ratschläge haben, nehmen Sie bitte Kontakt mit mir auf, um mir diese mitzuteilen.

Um mehr meiner Artikel zu lesen oder meine Arbeit zu verfolgen, können Sie sich unter mit mir in Verbindung setzenLinkedIn,Twitter, UndGithub. Es ist schnell, einfach und kostenlos!

WERBUNG

WERBUNG

WERBUNG

WERBUNG

WERBUNG

WERBUNG

WERBUNG

WERBUNG

WERBUNG

So testen Sie PHP-Code mit PHPUnit (6)
Zubair Idris Aweda

Erfahrener Softwareentwickler mit nachweislicher Erfahrung in der Computersoftwarebranche. Kenntnisse in PHP, JavaScript und anderen Webentwicklungstechnologien.

Wenn Sie bis hierhin gelesen haben, twittern Sie dem Autor, um ihm zu zeigen, dass Sie sich für ihn interessieren.

Lernen Sie kostenlos Programmieren. Der Open-Source-Lehrplan von freeCodeCamp hat mehr als 40.000 Menschen dabei geholfen, einen Job als Entwickler zu finden.Loslegen

WERBUNG

So testen Sie PHP-Code mit PHPUnit (2024)

FAQs

How to test a PHP code? ›

Testing Simple PHP Script
  1. Create a file with the following contents. Give the file a name such as myphpInfo. ...
  2. Copy the file to the your webservers DocumentRoot directory, for example – /var/www/html. ...
  3. Change the permissions to 755 (Linux only): ...
  4. Call the file from a browser:

How to check code coverage in PHPUnit? ›

It is mandatory to configure a filter for telling PHPUnit which source code files to include in the code coverage report. This can either be done using the --coverage-filter command-line option or via the configuration file (see The <include> Element).

How to run single test in PHPUnit? ›

To Run a single PHPUnit Test Case on a method within the file:
  1. Open your PHPUnit Test Case file in the editor.
  2. Place your cursor on the method you wish to test, right-click and select Run As | PHP Unit Test.

How to run and test PHP code? ›

php” file is placed inside the “htdocs” folder. If you want to run it, open any web browser and enter “localhost/demo. php” and press enter. Your program will run.

How do I test if PHP is working? ›

Make sure the Web server is running, open a browser and type http://SERVER-IP/phptest.php. You should then see a screen showing detailed information about the PHP version you are using and installed modules.

How do you test code coverage? ›

How is Code Coverage measured? It can be calculated using the formula: Code Coverage Percentage = (Number of lines of code executed)/(Total Number of lines of code in an application) * 100.

How do I get test code coverage? ›

On the Test menu, select Analyze Code Coverage for All Tests. You can also run code coverage from the Test Explorer tool window. Show Code Coverage Coloring in the Code Coverage Results window. By default, code that is covered by tests is highlighted in light blue.

How to run PHPUnit coverage? ›

How to install php-code-coverage on Windows. Run the command composer require on the terminal and press 'Enter' twice to install the phpunit/php-code-coverage library. On successful execution, the php-code-coverage library will be installed in < project_folder>\vendor\phpunit \php-code-coverage folder.

How to write PHPUnit test? ›

The test class must be named like <prefix>Test for example MyFirstTest. The test class file name must be the same as the class name. Every class must extend from the class \PHPUnit\Framework\TestCase. There should be at least one method (assertion) in a test class.

What is a PHPUnit test? ›

PHPUnit is a unit testing framework for the PHP programming language. It is an instance of the xUnit architecture for unit testing frameworks that originated with SUnit and became popular with JUnit. PHPUnit was created by Sebastian Bergmann and its development is hosted on GitHub.

How to run PHPUnit from command line? ›

To run all tests, navigate to the application root directory and execute the following command:
  1. ./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist Copied to your clipboard. ...
  2. ./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Example/Module/Test/Unit Copied to your clipboard.
Mar 4, 2023

How to run PHPUnit test locally? ›

You can run all the tests in a directory using the PHPUnit binary installed in your vendor folder. You can also run a single test by providing the path to the test file. You use the --verbose flag to get more information on the test status. The output shows that we ran 1 test, and made 3 assertions in it.

How to run PHPUnit test in vscode? ›

The following commands are available in VS Code's command palette, use the ID to add them to your keyboard shortcuts:
  1. reload : PHPUnit: Reload tests.
  2. run-all : PHPUnit: Run all tests.
  3. run-file : PHPUnit: Run tests in current file.
  4. run-test-at-cursor : PHPUnit: Run the test at the current cursor position.
Jun 14, 2023

How to test a PHP project? ›

Create and run unit tests on PHP applications, perform the following general steps:
  1. To run PHPunit tests, create a PHPUnit configuration.
  2. To run Behat tests, create a Behat configuration.
  3. To run Codeception tests, create a Codeception configuration.
  4. To run PHPSpec specifications, create a PHPSpec configuration.
Jun 26, 2023

How to test PHP code in terminal? ›

You just follow the steps to run PHP program using command line.
  1. Open terminal or command line window.
  2. Goto the specified folder or directory where php files are present.
  3. Then we can run php code using the following command: php file_name.php.
Jul 8, 2022

Can we inspect PHP code? ›

PHP is a server-side programming language, meaning it is executed at the web server before the website is sent to the end-user. This is why you can't see the PHP code when you view the source code.

How to test PHP code without server? ›

When you want to run your PHP web applications without using any external server then you need to start your development server using the command php -S localhost:8000 . So, your development server will listen to port 8000 at localhost. This command needs to be executed from the root folder of your PHP web application.

References

Top Articles
Latest Posts
Article information

Author: Kelle Weber

Last Updated:

Views: 5316

Rating: 4.2 / 5 (53 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Kelle Weber

Birthday: 2000-08-05

Address: 6796 Juan Square, Markfort, MN 58988

Phone: +8215934114615

Job: Hospitality Director

Hobby: tabletop games, Foreign language learning, Leather crafting, Horseback riding, Swimming, Knapping, Handball

Introduction: My name is Kelle Weber, I am a magnificent, enchanting, fair, joyous, light, determined, joyous person who loves writing and wants to share my knowledge and understanding with you.