Medium.com: Generating Code Coverage with PHPUnit and phpdbg

In this post on his Medium page Elton Minetto shows how to generate the code coverage of your PHPunit tests with better performance using phpdbg.

In a previous post (in portuguese) I explained how to identify tests that are taking too long to execute. In this post, I’ll show you how to increase the performance of code coverage report generation using PHPUnit.

In the phpunit.xml file it’s possible to add configurations to generate reports related to the tests that are being executed. […] In addition to changing the phpunit.xml file, to generate this information we also need to install the extension XDebug. However, by installing it we get a substantial decrease in performance.

He shows an example of the time difference in running the tests (about 1 minute without versus 22 with XDebug). He went looking for a better way and found this post talking about using phpdbg instead. He includes the "brew" commands to get everything you’ll need installed and how to use phpdbg with your coverage calls rather than XDebug. However, as is pointed out at the end of the post, the results are slightly different but they’re close enough to help you know what code to target next.

PHPDeveloper.org

ThePHP.cc: Questioning PHPUnit Best Practices

In this new post to thePHP.cc blog Sebastian Bergmann (creator of the PHPUnit unit testing tool) questions of some the current "best practices" involved in using the tool. More specifically he looks at the handling for expected exceptions and proposes a new practice to use going forward.

It is important to keep in mind that best practices for a tool such as PHPUnit are not set in stone. They rather evolve over time and have to be adapted to changes in PHP, for instance. Recently I was involved in a discussion that questioned the current best practice for testing exceptions. That discussion resulted in changes in PHPUnit 5.2 that I would like to explain in this article.

He talks about the currently widely used practice of the @expectedException annotation to define when an exception should be thrown from the code inside the unit test. Sebastian talks about the evolution of this into other annotations around the code and message returned from the exception too. He then proposes the new best practice as a result of some discussion around the annotation method: returning to the use of the setExpectedException method. He provides some reasoning behind the switch including the timing of the exception being thrown (not just "any time" but a more specific time).

PHPDeveloper.org

VG Tech Blog: Mocking das Dateisystem mit PHPUnit und vfsStream

Auf der VG Tech Blog heute gibt es einen anderen Beitrag im Zusammenhang mit Unit-Tests ( hier von vorhin), aber diesmal haben sie hier reden spöttisch das Dateisystem mit vfsStream , ein leistungsfähiges Werkzeug, mit dem Sie interagieren mit PHP-Streams wie ein virtuelles Dateisystem.

Dieser Artikel ist über, wie man das Dateisystem Mock beim Schreiben Unit-Tests, und es wird eher Code-heavy sein. […] PHPUnit ist der de-facto-Standard für Unit-Tests in PHP-Projekten, und das ist das, was wir verwenden werden zusammen mit vfsStream in diesem Artikel.

Die enthalten den Code für ein einfaches Storage-Treiber (VGF_Storage_Driver_Filesystem) mit vfsStream mit „store“, „delete“ und „get“-Methoden verwenden. Ebenfalls enthalten sind Beispiele für die Verwendung vfsStream, um Dinge wie Verzeichnis Existenz zu überprüfen, ob eine Datei existiert, oder wenn eine Datei gelesen werden kann. Ein paar einfache Aussagen sind in ihrer Probe Test-Set, um die Methoden in ihren „VGF_Storage_Driver_Filesystem“ Klasse zu überprüfen.

PHPDeveloper.org

Brian Swan Blog: Running PHPUnit in Windows Azure

Brian Swan hat einen letzten Beitrag zu seinem MSDN-Blog über auf einem Windows-Azure-Plattform (wie über PEAR installiert ist).

Nach herauszufinden, wie man PHPUnit von der Kommandozeile in einer Windows-Azure-Instanz laufen, fand ich, dass ein bisschen mehr Konfigurationsaufwand als ich erwartet notwendig war. Ich bin mir nicht 100% sicher, dass dies der beste Weg, um PHPUnit in Windows Azure ausgeführt wird, aber es ist ein Weg. Ich wäre interessiert zu hören, bessere Wege, dies zu tun.

Er bricht es in ein paar verschiedene Schritte:

  • Erstellen der Anwendung mit Ihrem Prüfungen vor Ort
  • Package der Anwendung für Azure Einsatz
  • aktivieren RDP-Zugriff auf Ihren Azure-Instanz
  • Finden Sie Ihre PHP und PEAR installieren auf Ihrem Instanz und in der Via RDP angemeldet, fügen Sie ihre Plätze, um Ihre aktuellen Pfad
  • Bearbeiten Sie die Datei phpunit.bat nach rechts PHP Standort Punkt
  • Führen Sie die Tests!

Für andere Optionen für die Prüfung Azure-basierte Anwendungen finden Sie unter .

PHPDeveloper.org

Volker Dusch Blog: Textual Code-Coverage-Informationen für PHPUnit

In einen neuen Post in seinem Blog Volker Dusch weist darauf hin, eine neue Funktion in einer neueren Version von PHPUnit , dem beliebten Unit-Testing-Framework für PHP – textuelle Code-Coverage-Informationen.

Vor drei Wochen PHPUnit 3,6 freigegeben wurde, und es hat ein wenig neue Funktion, die Sie vielleicht bis jetzt verpasst haben. PHPUnit kann nun zeigen Ihnen, Code-Coverage-Informationen über die Befehlszeile.

Optionen für die Report-Ausgabe sind: Einfärben, das Schreiben der Ausgabe in eine Datei, einschließlich einer Zusammenfassung des Projekts, den Namespace Trennung und Paket (mit dem @-Paket phpdoc tag) Informationen. Er umfasst einen Anwendungsfall er es gefunden – kleine Projekte, wo Sie die gesamte Codebasis abdecken schnell (mit einem „watch“-Befehl beispielsweise Filterung auf der Grundlage einer bestimmten Klasse) können.

PHPDeveloper.org

Lars Tesmer Blog: Wie man Unit Test der Klasse Anrufen auf eine URL (oder das Filesystem) Mit PHPUnit

Lars Tesmer hat einen Vorschlag für alle die Einheit Tester da draußen (Sie Unit-Test-Code, oder?), wenn benötigen, um ein Stück Code, dass ein Anruf macht, etwas auf das Dateisystem testen oder eine entfernte Ressource. Ihre Beispiele aus den Tests gegen die Assetic Codebasis geschrieben habe.

Für unsere jüngsten After Work Hacking meine Mitarbeiter und ich beschlossen, Unit-Tests für den Schreibzugriff das Open Source Projekt Assetic . Das stellte sich als eine bessere Entscheidung als unsere letzte sein, doch wir noch lief in eine interessante Herausforderung.

Bei der Prüfung der HttpAsset-Klasse aus dem Werkzeug, stießen sie auf das Problem – ein Aufruf einer remote / Datei-Ressource, die nicht wegen einer file_get_contents nennen, die auf eine externe Quelle abhängt. Sie kamen mit ein paar Optionen, um zu versuchen, dieses Beispiel zu testen, einige besser als andere:

  • Gib es eine echte URL mit Test
  • Wickeln Sie das file_get_contents in einer neuen Klasse (zB eine „ContentFetcher“)
  • vfsStream zu verspotten aus dem Dateisystem in das Gerät zu testen

In ihrem Fall könnte vfsStream nicht auf, wie sich die zu holen Anruf getätigt wurde, aber das Tool kann sehr nützlich sein, wenn Sie Mock aus einer externen Datei Systemressourcen benötigen.

PHPDeveloper.org

Lars Tesmer Blog: Was meine Mitarbeiter und ich lernte, beim Versuch, Unit Tests für PHPUnit schreiben

Lars Tesmer und seine Mitarbeiter haben auf die Verbesserung ihrer Entwicklungskompetenz in letzter Zeit gearbeitet, speziell . In seinem neuesten Beitrag teilt er einiges von dem was sie haben auf dem Weg entdeckt.

Der Plan war, zu versuchen und zu schreiben, wie viele Tests, wie wir konnten für die PHPUnit verwendet, um seine Behauptungen zu implementieren. […] Nun, unser Plan ging nicht auf diese Weise haben wir nicht wirklich in schriftlicher Form eine beträchtliche Menge von Unit-Tests erfolgreich zu sein. Doch es war immer noch eine wertvolle Erfahrung, wie sich später herausstellte die Unit-Tests der Constraints sind ein gutes Beispiel dafür, wie man Unit-Test.

Er umfasst drei der wichtigsten Punkte, die sie in ihrer Praxis Entwicklung kam:

  • Verwenden Sie nicht einen einzigen Testfall-Klasse, um mehrere Klassen testen
  • Benennen Sie Ihre Tests gut
  • Vermeiden Sie mehr als ein Verhalten in einem einzigen Test Test

Für jeden gibt es eine Zusammenfassung der Beantwortung der „Warum“-Frage hinter ihnen, darunter ein Beispiel-Test (testConstraintIsType), dass eine schlechte, multiple Behauptung der Praxis, dass nach Möglichkeit vermieden werden sollten zeigt.

PHPDeveloper.org

Lars Tesmer Blog: PHPUnit: Bessere Syntax für Expecting Ausnahmen

Lars Tesmer hat eine in PHPUnit das ist ein bisschen flexibler als nur ein Docblock Kommentar Definition.

Meine größte Probleme mit dieser Art zu erwarten, Ausnahmen sind:Die Erwartung ist ziemlich weit weg von dem Ort man normalerweise erwarten, dass eine Behauptung zu finden. Normalerweise kann eine Behauptung an der Unterseite eines jeden Test-Funktion gefunden werden, während mit der aktuellen Methode PHPUnit verwendet, es an der Spitze der Test-Funktion ist. Darüber hinaus ist es eine Anmerkung „begraben“ in einem Kommentar, der leicht zu übersehen ist. Schließlich wird PHPUnit für eine Ausnahme von einer der Code innerhalb der Test-Funktion geworfen zu sehen.

Um sie zu ersetzen, er ist ein „assertThrowsException“ Test, der in der Ausnahme-Typ für die Prüfung und den Code für die Ausnahme-Test (über eine Schließung) nimmt erstellt. Er hat seine , wenn Sie möchten, probieren Sie es aus. Dies erlaubt Ihnen auch, für mehr als eine Ausnahme in der gleichen test test, möglicherweise als Folge der leicht veränderten Bedingungen.

PHPDeveloper.org

Michelangelo van Dam Blog: Qualitätssicherung auf PHP-Projekte – PHPUnit Teil 3

Michelangelo van Dam ist heute zurück mit dem nächsten Teil seiner „Quality Assurance in PHP Projects“-Serie, die dritte Teil von seinen Blick auf PHPUnit , die beliebte PHP-basierte Unit-Testing-Software.

Zeit für den dritten Teil auf Unit-Tests mit PHPUnit in meiner Qualitätssicherung auf PHP-Projekte -Serie. In part one haben wir angefangen zu schreiben Unit-Tests für ein einfaches Spiel von tic -tac-toe. In part two wir begonnen Umwandlung unserer Unit-Tests in tatsächliche Code und bewegt unsere allgemeinen Unit-Test-Code für Stromnetze in ein Grid konzentriert Gerät zu testen. In diesem Teil sind wir, wie wir die Tests für unsere Spieler zu optimieren suchen.

Er gräbt tiefer in die TicTacToe Anwendung und konzentriert sich zunächst auf die Single-Player-Funktionalität, die Überprüfung der Symbol für den aktuellen Player (ein „X“ oder „O“) und Auslösen von Ausnahmen in den Code, wenn die Dinge nicht richtig sind. Er zeigt auch die Tests zur Überprüfung auf „mehr als ein Spieler“ und „kann nicht mehr als zwei Spieler“-Szenarien. Vollständige Code für die Klasse Spieler und Tests enthalten sind.

PHPDeveloper.org