Frage

Ich bin ein Webentwickler, der in PHP arbeitet.Ich habe nur begrenzte Erfahrung mit der Verwendung von Test Driven Development in C#-Desktopanwendungen.In diesem Fall haben wir nUnit für das Unit-Testing-Framework verwendet.

Ich würde gerne TDD in neuen Projekten verwenden, bin mir aber nicht sicher, wo ich anfangen soll.

Welche Empfehlungen haben Sie für ein PHP-basiertes Unit-Testing-Framework und welche guten Ressourcen gibt es für jemanden, der noch relativ neu im TDD-Konzept ist?

War es hilfreich?

Lösung

Ich habe sowohl PHPUnit als auch verwendet SimpleTest und ich fand SimpleTest um einfacher zu bedienen zu sein.

Was TDD betrifft, hatte ich im reinsten Sinne nicht viel Glück damit.Ich denke jedoch, dass das hauptsächlich ein Zeit-/Disziplinproblem meinerseits ist.

Das nachträgliche Hinzufügen von Tests war einigermaßen nützlich, aber am liebsten schreibe ich SimpleTest-Tests, die auf bestimmte Fehler testen, die ich beheben muss.Dadurch lässt sich ganz einfach überprüfen, ob die Dinge tatsächlich repariert sind und auch bleiben.

Andere Tipps

Ich empfehle sehr Testgetriebene Entwicklung von Kent Beck (ISBN-10:0321146530).Es wurde nicht speziell für PHP geschrieben, aber die Konzepte sind vorhanden und sollten leicht in PHP übersetzbar sein.

PHPUnit ist ein Standard, aber manchmal auch überwältigend. Wenn Sie es also zu komplex finden, schauen Sie es sich an phpt um Ihnen den Einstieg zu erleichtern.Es ist sehr, sehr einfach, darin Tests zu schreiben.Für jeden Programmierer ein Kinderspiel.

Und um Ihre TDD-Frage zu beantworten: Ich bin nicht sicher, ob TDD im PHP-Bereich häufig verwendet wird.Ich kann sehen, dass schnelle Anwendungsentwicklung und TDD etwas im Widerspruch stehen (ausschließlich meiner Meinung nach).TDD erfordert, dass Sie ein vollständiges Bild von dem haben, was Sie bauen, und dass Sie Ihre Tests im Voraus schreiben und dann den Code implementieren, um den Test zu bestehen.

Stattdessen schreiben wir beispielsweise viele Tests, wenn wir fertig sind.Dies ist nicht immer der beste Ansatz, da es manchmal zu Scheintests kommt, die zwar bestehen, aber nicht wirklich nützlich sind, aber zumindest etwas, das Sie erweitern können.Intern fahren wir mit den Tests fort und schreiben grundsätzlich einen Test für jeden Fehler, den wir finden.Dadurch wird es fester.

Ich persönlich bevorzuge SimpleTest.Es gibt einen Befehlszeilen-Test-Runner und einen webbasierten Test-Runner, und es gibt sogar Eclipse Plugin damit Sie Unit-Tests über die IDE selbst ausführen können.Ich fand es viel schwieriger, die Zend-zu-PHPUnit-Verbindung zum Laufen zu bringen, insbesondere mit dem Debugger.

Die Art und Weise, wie wir SimpleTest intern verwenden, ist mit a kontinuierliche Integration Drehbuch, das wir selbst geschrieben haben.Jedes Mal, wenn wir eine Funktion in SVN einchecken, beziehen wir die Unit-Tests mit ein.Etwa jede Stunde wird das CI-Skript ausgeführt und ruft ein Befehlszeilen-PHP-Skript auf, das alle unsere Komponententests ausführt.Wenn irgendetwas kaputt geht, bekomme ich eine E-Mail.Es war eine großartige Möglichkeit, Fehler in unseren Systemen zu reduzieren.

Sie können jedoch genauso gut so etwas verwenden Phing um Ihre Tests automatisch auszuführen, entweder über einen Cron-Job oder mit einem SVN-Check-in-Hook.

Wenn Sie mich für weitere Hilfe direkt kontaktieren möchten, können Sie mich über meine Profilinformationen auf SO erreichen.Ich würde Ihnen gerne weiterhelfen.

SimpleTest ist ein großartiges System.Ich habe vor etwa fünf Monaten damit angefangen, da ich noch nie von TDD gehört hatte, und SimpleTest ist leicht zu erlernen, aber immer noch leistungsstark.Was Ressourcen betrifft, lese ich gerade TDD durch Beispiel von Kent Beck, und es ist gut.

Sie sollten sich das ansehen PHPUnit, es sieht ziemlich aus wie nUnit.

Ein weiteres modernes Werkzeug, auf das Sie achten sollten Codeception.Es ist viel einfacher als PHPUnit und beinhaltet einen szenariogesteuerten Ansatz, der für die Generierung von Dokumentation aus Tests sehr nützlich ist.

Testgetriebene Entwicklung ist ein Ansatz, bei dem Tests immer vor dem Code geschrieben werden.Das solltest du lernen PHPUNIT zuerst, um mit der TDD-Entwicklung zu beginnen.Dann sollten Sie beim Erstellen Ihrer Funktion immer darüber nachdenken, wie die Funktion fehlschlagen kann, und einen Testfall in phpunit schreiben. Am Ende sollten Sie Code schreiben, um Ihren Test zu bestehen.Da es sich um einen neuen Ansatz handelt, wird es am Anfang etwas schwierig sein, aber wenn Sie sich erst einmal daran gewöhnt haben, werden Sie es sehr nützlich finden, insbesondere für Fehler nach der Entwicklung und für den Codierungsstil.Sie können das durchgehen Schritt für Schritt Leitfaden zum Verständnis dieses Konzepts.

Denken Sie immer daran, dass Tests, die nach der Entwicklung geschrieben werden, nutzlos sind.TDD ist also ein Muss, wenn Sie Unit-Tests schreiben möchten

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