Warum ist PHPUnit besser als ein eigenes Testskript?

7

Beim Durchsehen der Dokumente sehe ich, dass PHPUnit nur diese Funktionen anbietet:

Ссылка

Alle können sehr einfach in einem benutzerdefinierten Testskript in weniger als 1K Zeilen implementiert werden ...

PHPUnit hat 2 MB Dateien (etwa 200), die eine große Menge an Klassen enthalten. Außerdem läuft PHPUnit nur von der Kommandozeile aus: (

Wäre es nicht besser, ein eigenes Skript zu erstellen?

    
ellabeauty 08.08.2012, 11:38
quelle

4 Antworten

10

PHPUnit ist ein Biest. Es ist groß, manchmal etwas kontraintuitiv und hat seine Schwächen. Ihr Code wäre natürlich intuitiv und fehlerfrei für Ihre direkten Anforderungen. Ich habe auch oft darüber nachgedacht, ob es kein Schritt vorwärts wäre, mein eigenes Test-Framework zu schreiben, aber ... es ist nicht . Sie können ein rudimentäres Test-Framework an einem Tag abschließen, aber:

  • PHPUnit ist in den meisten modernen IDEs integriert;
  • PHPUnit funktioniert gut mit XDebug für Code-Coverage-Berichte;
  • PHPUnit kann mit Selenium für Integrationstests zusammenarbeiten;
  • PHPUnit wird von vielen Programmierern verwendet, was bedeutet, dass Ihre Tests für viele sofort klar sind;
  • PHPUnit kann in ein CI-Setup wie Travis CI integriert werden.
  • PHPUnit hat eine spöttische Bibliothek;
  • Am wichtigsten: PHPUnit funktioniert .

Es gibt viele Gründe gegen das Schreiben Ihrer eigenen.

    
Berry Langerak 08.08.2012 12:22
quelle
8

Zwei Punkte, die @hakre nicht berührt hat:

Codeabdeckung

Es ist gar nicht so einfach, ziemlich ausführlich über die Code-Coverage zu berichten (Visualisierung, wie viel Code ausgeführt wurde). xDebug ermöglicht es Ihnen, relativ schnell mit einigen Randfällen und Ärgernissen zu beginnen, die viel Zeit in Anspruch nehmen.

PHPUnit helps you out with a nice report.

Berichterstattung

Das Wichtigste beim Testen ist die Fähigkeit, schnell herauszufinden, was schief gelaufen ist.

Building a nice diff selbst für alle Sachen in PHP (Ausnahmen, Objekte, Strings, XML, JSON, etc.) ist ziemlich zeitaufwendig

Sie werden auch irgendwann zu einem kontinuierlichen Integration Server wie Jenkins wechseln Ein Test-Framework wie PHPUnit erzeugt bereits alle benötigten Artefakte (junit.xml, clover.xml), die es Ihnen ermöglichen, set up CI for your projects in half an hour .

Also alles in allem, auch wenn Sie nicht alle erweiterten Funktionen und Helfer verwenden (wie Mocking, Prozessisolation, um alten Code zu testen, outputBuffering, Ausnahme-Helfer), erhalten Sie ein Basis-Setup, das mit Ihnen wachsen kann Ihr Projekt wächst und wird reifer.

Nur CLI

Übrigens. Es gibt a web interface to phpunit , die Visual PHPUnit , das in einem Browser ausgeführt wird. Trotzdem, um ehrlich zu sein, habe ich keine Ahnung, warum irgendjemand das wollen würde. Vielleicht ohne Aktualisierung, aber ich würde lieber eine Skriptschleife auf einem CLI-Terminal als. Aber zu jedem für sich:)

    
edorian 08.08.2012 12:15
quelle
6
  

Wäre es nicht besser, ein eigenes Skript zu erstellen?

Nein , das ist keine bessere Idee. Wenn Sie ein eigenes Skript erstellen, programmieren Sie alleine. Mit PHPUnit haben Sie eine große Gemeinschaft von Benutzern, die sich um verschiedene Funktionen kümmern, die normalerweise für Komponententests benötigt werden. Daher ist es von Vorteil, den Code zu kopieren und zu teilen, um die Arbeit zu reduzieren.

Es ist Software, und es wird nicht nur schlecht, wenn es kopiert wird. Zusätzlich kommt es mit vielen Eingaben (z. B. Konfigurationen) und Ausgaben (Testergebnisformate, Code Coverage, Reporting) sowie Integrationen (Commandline Runner, IDEs, CI-Server, ...). Irgendwo würden Sie nicht einmal nahe kommen, wenn Sie heute anfangen.

Sie können jedoch test-driven-Entwicklung ohne PHPUnit starten und die Tests selbst schreiben. Das ist großartig, um TDD zu lernen, und es ist großartig, besser zu verstehen, warum man ein Test-Framework verwendet.

    
hakre 08.08.2012 11:59
quelle
0

Ich denke, das Obige deckte es ab, aber da es keine richtige Antwort gab, lassen Sie mich das hinzufügen: Machen Sie nicht den klassischen Fehler, der in der Industrie gemacht wird, um das Rad neu zu erfinden. Wenn es bereits einen De-facto-Standard gibt und die Gemeinschaft und / oder ein Unternehmen eine beliebige Software mit einer Roadmap unterstützen, dann verwenden Sie sie. Das einzige, was gut ist, wenn man seine eigene Lösung entwickelt, ist zu lernen, wie die Eingeweide besser für andere etablierte funktionieren. Also, um deine Frage zu beantworten, kannst du es tun, ja, solltest du, nein, und wäre es vielleicht lehrreich? Warum PHP verwenden, Sie könnten einfach Ihre eigene Sprache erstellen. Warum Framework X verwenden, Sie könnten einfach Ihr eigenes Framework erstellen. Sie bekommen den Punkt. Es sei denn, Sie haben wirklich einen einzigartigen Ansatz, der eindeutig ein besseres Produkt gegenüber den gängigen bestehenden Ansätzen zeigt. Es ist ein schlechter Weg, darüber nachzudenken.

    
jsteinmann 22.12.2012 05:22
quelle

Tags und Links