Mit der Popularität der PHP-Entwicklung hat sich PHPUnit in den letzten Jahren zu einem der unverzichtbaren Tools für Entwickler für die Durchführung von Unit-Tests und Integrationstests entwickelt. PHPUnit bietet Entwicklern einen vollständigen Satz an Testtools, einschließlich der Analyse der Testabdeckung. In diesem Artikel wird erläutert, wie Sie PHPUnit für Mock-Tests und Testabdeckungsanalysen in der PHP-Entwicklung verwenden.
1. Was ist ein Probetest?
Mock-Testing ist eine Testmethode, mit der das Verhalten bestimmter Komponenten im zu testenden Programm getestet wird. Beim Mock-Testing werden bestimmte Funktionen oder Objekte im zu testenden Programm gefälscht, um die Situation in der tatsächlichen Testumgebung zu simulieren. Durch Mock-Tests können Entwickler das tatsächliche Verhalten des Programms simulieren und so die Testkosten senken und die Testqualität verbessern.
Bei der Durchführung von Mock-Tests in PHPUnit werden Mock-Objekte normalerweise verwendet, um einige der ursprünglichen Objekte oder Funktionen im Programm zu ersetzen. Ein Mock-Objekt ist ein simuliertes Objekt, das über dieselbe Schnittstelle wie das Originalobjekt verfügt, aber einige Verhaltensmuster simulieren und Ergebnisse des Originalobjekts zurückgeben kann, wenn es tatsächlich ausgeführt wird. In PHPUnit können wir die Klasse PHPUnit_Framework_MockObject verwenden, um Mock-Objekte für die zu testenden Objekte zu generieren, um herkömmliche Tests und Abdeckungsanalysen ihres Verhaltens durchzuführen.
2. Schritte zur Verwendung von PHPUnit für Mock-Tests
Zuerst müssen Sie PHPUnit über Composer installieren oder das PHPUnit-Phar-Paket herunterladen. Die spezifischen Installationsschritte sind wie folgt:
composer require phpunit/phpunit --dev
wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar
Wenn Sie PHPUnit zum Testen verwenden, Sie müssen sich im Stammverzeichnis der Codebibliothek befinden. Erstellen Sie ein Testverzeichnis, erstellen Sie dann eine Datei im Verzeichnis, die mit der Programmdatei identisch ist, und fügen Sie nach dem Dateinamen das Suffix Test hinzu, um anzuzeigen, dass es sich um eine Testdatei handelt . Wenn Sie beispielsweise eine PHP-Klasse namens UserService testen möchten, würde die Testdatei UserServiceTest.php heißen.
In der Testdatei müssen wir eine Testfallklasse schreiben, die die PHPUnit_Framework_TestCase-Klasse erbt und die zu testenden Methoden implementiert. Jede Testmethode in einer Testfallklasse sollte die Methode „assert()“ verwenden, um zu testen, ob die Methodenausgabe des Objekts korrekt ist. Zum Beispiel:
class UserServiceTest extends PHPUnit_Framework_TestCase { public function testSignup() { $userService = new UserService(); $this->assertTrue($userService->signup('user1', 'password1')); } }
In einem Testfall müssen Sie möglicherweise bestimmte Methoden oder Eigenschaften einer Klasse verspotten, um ein bestimmtes Szenario zu simulieren. In PHPUnit können Sie die Klasse PHPUnit_Framework_MockObject verwenden, um Mock-Objekte zu generieren. Das Mock-Objekt simuliert das Verhalten des Originalobjekts. Wir können den zu testenden Code testen, indem wir die Methode des Mock-Objekts in der Testmethode aufrufen.
Zum Beispiel möchten wir die Methode getUser() von UserService testen. Die Klasse UserService hängt von einer Instanz der Klasse UserDao ab. Wir können PHPUnit_Framework_MockObject verwenden, um ein UserDao-Mock-Objekt zu erstellen und es einzufügen in den UserService. Test:
class UserServiceTest extends PHPUnit_Framework_TestCase { public function testGetUserWhenNotLoggedIn() { $userDaoMock = $this->getMockBuilder(UserDao::class) ->disableOriginalConstructor() ->getMock(); $userService = new UserService($userDaoMock); $this->assertNull($userService->getUser()); } }
Im obigen Beispiel verwenden wir zuerst die PHPUnit_Framework_MockObject-Klasse, um das Mock-Objekt von UserDao zu erhalten, und übergeben dann das Mock-Objekt beim Erstellen einer Instanz der UserService-Klasse.
Nachdem wir den Testfall geschrieben und das Mock-Objekt erstellt haben, können wir PHPUnit verwenden, um den Test auszuführen. Die Methode zum Ausführen des Tests ist sehr einfach. Führen Sie ihn einfach in der Befehlszeile aus:
./vendor/bin/phpunit
Für eine separate Testdatei können Sie den Dateinamen direkt angeben:
./vendor/bin/phpunit tests/UserServiceTest.php
Nachdem Sie den Test ausgeführt haben PHPUnit gibt die Testausführungsergebnisse aus, einschließlich der Ausführungszeit, der Ausführungsergebnisse, der Abdeckung und anderer Informationen zu jeder Testmethode. Unter diesen Informationen können uns die Abdeckungsinformationen Aufschluss darüber geben, welcher Code vom Test abgedeckt wird und welcher Code nicht. Abdeckungsinformationen werden normalerweise in Form von XML-, HTML-, Clover- oder PHP-Code ausgegeben. Sie können je nach Bedarf verschiedene Formate auswählen:
./vendor/bin/phpunit --coverage-clover=/path/to/coverage/report.xml
./vendor/bin/phpunit --coverage-html=/path/to/coverage/report/
./vendor/bin/phpunit --coverage-clover=/path/to/coverage/report.xml
./vendor/bin/phpunit --coverage-php=/path/to/coverage/report/coverage.php
3. Zusammenfassung
Mocktests sind eine sehr wichtige Testtechnologie und werden häufig in der Softwareentwicklung eingesetzt. PHPUnit ist eines der am häufigsten verwendeten Unit-Testing-Frameworks in der PHP-Entwicklung und kann PHP-Programmierern vollständige Testtools zur Verfügung stellen, einschließlich Mock-Objekten und Testabdeckungsanalysen. Mock-Tests über PHPUnit können die Situation in der tatsächlichen Testumgebung simulieren, wodurch die Testeffizienz und -qualität verbessert und die Zuverlässigkeit und Stabilität des Codes sichergestellt werden.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHPUnit für die Mock-Testabdeckungsanalyse in der PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!