Frage

Ich frage mich, ob jemand, der Erfahrung mit beiden Themen hat, etwas Licht ins Dunkel bringen kann bedeutsam Gibt es einen Unterschied zwischen den beiden?

Gibt es jeweils eine spezifische Stärke, die es für einen bestimmten Fall geeignet macht?

War es hilfreich?

Lösung

Diese Frage ist ziemlich veraltet, aber da es immer noch Verkehr und Antworten gibt, möchte ich meinen Standpunkt hier noch einmal darlegen, obwohl ich es bereits bei einigen anderen (neueren) Fragen getan habe.

Ich bin wirklich wirklich verwirrte diesen SimpleTest Trotzdem gilt als Alternative zu phpunit.Vielleicht bin ich nur falsch informiert, aber soweit ich gesehen habe:

  • PHPUnit ist der Standard;Die meisten Frameworks verwenden es (wie Zend Framework (1&2), Cake, Agavi, sogar Symfony lässt sein eigenes Framework in Symfony 2 für PHPUnit fallen).
  • PHPUnit ist in jede PHP-IDE (Eclipse, Netbeans, Zend Stuide, PHPStorm) integriert und funktioniert gut.
  • Simpletest hat eine Eclipse-Erweiterung für PHP 5.1 (auch bekannt alsalt) und sonst nichts.
  • PHPUnit funktioniert problemlos mit jedem Continuous-Integration-Server, da es alle Standardprotokolldateien für Codeabdeckung und Testberichte ausgibt.
  • Simpletest nicht.Während dies zunächst kein großes Problem darstellt, wird es Ihnen große Probleme bereiten, wenn Sie aufhören, „nur zu testen“, und mit der Entwicklung von Software beginnen (Ja, diese Aussage ist provokativ :) Nehmen Sie sie nicht zu ernst).
  • PHPUnit wird aktiv gewartet, ist stabil und funktioniert hervorragend für jede Codebasis, jedes Szenario und jede Art und Weise, wie Sie Ihre Tests schreiben möchten.
  • (Subjektiv) PHPUnit bietet viel schöneres Codeabdeckungsberichte als Simpletest
  • Mit PHPUnit erhalten Sie diese Berichte auch in Ihrer IDE (Netbeans, Sonnenfinsternis, ...)
  • Außerdem gibt es ein paar Vorschläge für a web interface to phpunit tests.

Ich habe noch kein Argument für SimpleTest gesehen.Die Installation ist nicht einmal einfacher, da PHPUnit über Pear verfügbar ist:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

und der „erste Test“ sieht ziemlich gleich aus.

Ab PHPUnit 3.7 es ist noch einfacher zu installieren es durch einfaches Verwenden der PHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

oder nur für Windows wird heruntergeladen der Phar und das Laufen:

php phpunit-.phar

oder bei Verwendung des unterstützte Composer-Installation Wege wie

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

zu Ihrer Composer.json.


Für alles, was Sie testen möchten, hat PHPUnit eine Lösung und Sie werden praktisch überall Hilfe finden können (SO, #phpunit IRC-Kanal auf Freenode, so ziemlich jeder PHP-Entwickler ;) )

Bitte korrigieren Sie mich, wenn ich etwas falsch angegeben oder etwas vergessen habe :)

Übersicht über PHP-Testtools

Video: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

Folien: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

Es erwähnt Dinge wie Atoum das sich selbst nennt:„Ein einfaches, modernes und intuitives Unit-Testing-Framework für PHP!“


Vollständige Offenlegung

Ich habe diese Antwort ursprünglich im Januar geschrieben.2011, als ich mit keinem PHP-Testprojekt in Verbindung stand.Seitdem bin ich Mitwirkender bei PHPUnit.

Andere Tipps

Ich bevorzuge jetzt PHPUnit, aber als ich angefangen habe, habe ich SimpleTest verwendet, da ich nicht immer Zugriff auf die Befehlszeile hatte.SimpleTest ist nett, aber das Einzige, was es meiner Meinung nach wirklich über PHPUnit hat, ist der Web Runner.

Die Gründe, warum ich PHPUnit mag, sind, dass es sich in andere PHP-Entwicklertools integrieren lässt, z phing (wie auch SimpleTest), phpUnderControl, Und Xinc.Ab Version 3.0 hat Spott Unterstützung, wird aktiv weiterentwickelt und die Dokumentation ist ausgezeichnet.

Die einzige Möglichkeit, diese Frage selbst zu beantworten, besteht darin, beide eine Zeit lang auszuprobieren und herauszufinden, welche besser zu Ihrem Stil passt.

BEARBEITEN:Phing lässt sich jetzt auch in SimpleTest integrieren.

  • Ich konnte NICHT verstehen, wie man PHPUnit herunterlädt und installiert.
  • Ich konnte jedoch leicht verstehen, wie man SimpleTest installiert.

    (Soweit ich mich an die Anleitung erinnern kann PHPUnit sagte etwas in der Art von "installiere es über PEAR und wir werden keine Anweisungen geben, wie du es anders machen kannst") Siehe:

  • http://www.phpunit.de/manual/current/en/installation.html

Für SimpleTest, laden Sie es einfach herunter und verweisen Sie in Ihrem Code darauf.

Also hat Simpletest für mich gewonnen.

Baphled hat einen schönen Artikel darüber SimpleTest vs. PHPUnit3.

Die Hälfte der genannten Punkte in der akzeptierten Antwort ist einfach nicht wahr:

SimpleTest hat

  • die einfachere Einrichtung (in Ordner extrahieren, einschließen und ausführen)
  • Einfach den Ordner in die Versionskontrolle einchecken (versuchen Sie das heutzutage mit phpunit :))
  • weniger Abhängigkeiten und viele Erweiterungen (webtester, formtester, auth)
  • ein guter Code-Coverage-Reporter, der leicht zu erweitern ist (Punkte, Funktionsnamen, Farben)
  • eine Zusammenfassung der Codeabdeckung (endlich in PHPUnit 4.x gelandet)
  • ein anständiger Web-Runner und ein Ajax-Web-Runner mit Gruppen- und Einzeldateiausführungen
  • noch besseres Diff-Tool (ohne Probleme mit Leerzeichen oder Zeilenumbrüchen)
  • ein Adapter/Wrapper zum Ausführen von SimpleTests durch phpUnit und umgekehrt
  • Kompatibilität PHP5.4+

Der Nachteil:

  • kein Industriestandard (PHPUnit)
  • nicht aktiv gepflegt

Ich fand, dass SimpleTest noch einfacher einzurichten war als PHPUnit.Extrahieren Sie es einfach und schon kann es losgehen.Ein Vorteil davon besteht darin, dass Sie das gesamte Test-Framework auf die gleiche Weise wie Ihren Quellcode speichern können, wenn Sie an mehr als einem Computer arbeiten und dadurch wissen, dass Sie denselben Framework-Code verwenden.Vor allem, wenn Sie es in irgendeiner Weise ändern.

Ich würde also sagen, dass eine Stärke von SimpleTest darin besteht, dass es sehr leicht und tragbar ist.

SimpleTest wird außerdem mit einer sehr einfachen HTML-GUI geliefert, die bei Bedarf ganz einfach erweitert werden kann.Soweit ich weiß, enthält PHPUnit keine HTML-GUI, es stehen jedoch GUIs zum Herunterladen zur Verfügung, z Cool.

Nun, ich habe einen webbasierten UI-Testfallläufer für phpUnit erstellt und ihn auf SourceForge verfügbar gemacht.Verwendet Ajax und hat auch eine ziemlich coole Benutzeroberfläche. Wenn Sie es ausprobieren möchten, schauen Sie es sich bei SourceForge an.Der Projektname ist phpunitwebui und die Website ist http://phpunitwebui.sourceforge.net/

Wie bereits erwähnt, handelt es sich meist um eine Präferenzwahl, da beide die von Ihnen geschriebenen Tests ausführen und die Ergebnisse zurückmelden.

Die Simpletest-Web-Benutzeroberfläche ist sehr nützlich, kann aber manchmal auch umständlich sein.In meinem aktuellen Projekt hätte ich mehr Arbeit in ein System stecken müssen, damit meine Anwendung (eine API) mit der Webschnittstelle funktioniert (Apache richtig einrichten, Dateien in das public_html-Stammverzeichnis kopieren usw.), als es gewesen wäre um phpunit einfach aus dem Eclipse-Arbeitsbereich auszuführen.Deshalb wähle ich PHPUnit.Außerdem war die Verwendung von PEAR ein großes Plus, da Sie Aktualisierungen nicht manuell nachverfolgen müssen.Einfach laufen pear upgrade ab und zu und PHPUnit wird auf dem neuesten Stand gehalten.

Ich habe Simple Test eine Weile nicht ausprobiert, das letzte Mal hatte es ein Eclipse-Plugin, was für mich ein wichtiger Faktor ist, aber es wurde schon lange nicht mehr aktualisiert.Sebastian Bergmann arbeitet immer noch sehr aktiv an PHPUnit, allerdings fehlt noch ein gutes Plugin für Eclipse – für das neue Zend Studio ist es aber enthalten.

Diese Frage ist alt, aber ich möchte meine Erfahrung hinzufügen:PHPUnit scheint mittlerweile der Standard zu sein, aber wenn Sie mit einem Legacy-System arbeiten, das viele, viele globale Variablen verwendet, könnten Sie von Anfang an stecken bleiben.Es scheint, dass es in PHPUnit keine gute Möglichkeit gibt, Tests mit globalen Variablen durchzuführen. Sie müssen Ihre Variablen anscheinend über $GLOBALS festlegen, was NICHT GUT ist, wenn Sie Unmengen von Dateien haben, die überall globale Variablen festlegen.Okay, manche mögen sagen, dass das Problem im Altsystem liegt, aber das bedeutet nicht, dass wir auf einem solchen System keine Tests durchführen können.Mit SimpleTest ist das ganz einfach.Ich nehme an, wenn PHPUnit es uns erlaubt, eine Datei global einzubinden, nicht innerhalb eines Klassen-/Funktionsbereichs, dann wäre das auch kein allzu großes Problem.

Eine weitere vielversprechende Lösung ist http://www.enhance-php.com, sieht gut aus :)

Dies ist aus der Sicht eines sehr gelegentlichen PHP-Entwicklers:

Ich brauchte zwei Tage, um PHPUnit zu verstehen, wobei ich hauptsächlich versuchte, unter Eclipse zu debuggen, was ich schließlich aufgab.

Ich habe zwei Stunden gebraucht, um Simpletest inklusive Debugging unter Eclipse einzurichten.

Vielleicht werde ich in Zukunft die Mängel von Simpletest finden, aber bisher erfüllt es gut, was ich brauche:Testklassen, Mock-Objekte, Testcode-Debugging und Webschnittstelle für einen schnellen Überblick über die Situation.

Wieder: Dies aus der Sicht eines sehr gelegentlichen PHP-Benutzers (nicht einmal Entwickler :-)

Wenn Tausende Funktionen auf einmal getestet werden müssen, ist PHPUnit die richtige Wahl. Ein einfacher Test reicht nicht aus, da er webbasiert ist.

Ich verwende immer noch Simple Web für kleine Tests.

Aber beide sind gut

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top