In der Ruby-Welt wird TDD durch in das Framework integrierte Tools erleichtert. Mit Factory Girl, Mocha, rSpec und anderen können Entwickler einfach und dynamisch Tests erstellen, die die benötigten Testfälle adressieren.
Der Mangel an TDD-Tools in Drupal hat mich ebenfalls frustriert. Mein größtes Problem ist, wie lange es dauert, einen einzelnen Test durchzuführen. Die Entwicklungszyklen können nicht durch einzelne Tests verlangsamt werden, die jeweils 60 bis 90 Sekunden dauern. Vollständige Testsuiten würden mehrere Stunden in Anspruch nehmen, wenn Sie sich die Mühe machen, die Tests überhaupt zu schreiben.
Ich vermute, es hat mit dem Kopieren einer vollständigen Datenbank bei jedem Testlauf zu tun, aber das wird sich in naher Zukunft wahrscheinlich nicht ändern, was ich sagen kann, besonders wenn Sie dazu DrupalWebTestCase verwenden müssen.
Ich hacke eine Lösung mit Phactory und phpunit zusammen, die Drupal manuell bootet. Offensichtlich sind einige Probleme aufgetreten und haben es noch nicht beendet, aber es kommt dahin.
Glücklicherweise liegt der Großteil meiner Arbeit auf der Backend-Ebene, sodass ich auf der Ebene DRUPAL_BOOTSTRAP_DATABASE bleiben kann. Aber ich stoße auf mehr Situationen, in denen ich den vollen Stack brauche.
Letztendlich wird TDD in Drupal nicht gut unterstützt, so dass Sie Ihr eigenes schreiben können, damit es außerhalb des Drupal-Test-Frameworks funktioniert oder die schlechte Leistung erträgt.
- UPDATE -
Ich habe erfolgreich eine vollständige Drupal-Integration mit Phactory eingerichtet und führe jetzt meine Tests über phpunit anstelle des Drupal-Web-Testfalls aus. Also ist es möglich.
Hoffentlich komme ich zu einem Punkt, an dem ich es veröffentlichen und in das Phactory-Dokument integrieren kann.
- UPDATE 2 -
Eine Anleitung zum Einrichten von Phactory finden Sie unter https://github.com/trimbletodd/phactory .
Da Marks Blog offline ist, erwähne ich einige der Tools, die sein Team implementiert hat:
Funktionstest: Selen
Unit Test: Simpletest
Build Server: Jenkins
Performance Benchmarking: XDebug + Cachegrind
In den zwei Jahren, seit ich diese Frage gestellt habe, haben einige zusätzliche Tools in der TDD-Szene an Beliebtheit gewonnen. Wenn man heutzutage von Test Driven Development spricht (im Drupal-Kontext natürlich), hat eine Medaille zwei Seiten: Front-End-Tests und Back-End-Tests.
Hier sind zwei Präsentationen, die sich von der neuesten Drupalcon Portland 2013 abheben und diese Angelegenheit repräsentieren:
Entwicklung nach Zahlen , Backend-Tests.
Automatisierte Tests mit Jasmine und PhantomJS , Frontend-Tests.
Die erste Präsentation bezieht sich nicht auf Unit- oder Funktionstests (genau genommen), sondern auf Tools zur Messung der Codequalität. Trotzdem habe ich das Gefühl, dass es etwas mit dem Thema zu tun hat.
quelle
Das einzige, was mir bekannt ist, ist, dass Sie für beigestellte Module das automatische Testen von Commits und Patches in der Problemwarteschlange aktivieren können (siehe http://drupal.org/node/689990) . Es ist immer noch etwas instabil, besonders wenn Sie Abhängigkeiten haben.
Die meisten Projekte tun wahrscheinlich eher etwas im Sinne einer fehlergesteuerten Entwicklung, bei der es im Grunde darum geht, erst dann einen Test zu schreiben, wenn ein Fehler gefunden wurde, und ihn dann zu beheben. Wenn überhaupt ;)
Nach meiner persönlichen Erfahrung ist TDD in Drupal ziemlich schwierig, da Sie häufig nicht (nur) Komponententests mit Simpletest schreiben, sondern Integrationstests, bei denen Sie Seiten anzeigen und Formulare senden. Es kann also ziemlich schwierig sein, gute Tests im Voraus zu schreiben. Aber vielleicht bin ich das einfach nicht gewohnt :)
quelle