20
Was wird man von Lime 2 erwarten können?
3 Comments · Posted by Christian in The right tool
Ich habe heute irgendwie Probleme mit meinem vServer und schaffe es nicht, mich um meine Hudson Installation zu kümmern. Schade eigentlich, denn ich glaube, da wäre ich gut vorangekommen..
Aber es gibt ja noch andere Themen!
Ich habe ja bereits in einem vorherigen Post erklärt, warum ich mich aktuell für lime und gegen PHPUnit entschieden habe. Kurz gesagt: ich arbeite privat nahezu ausschliesslich mit symfony und kann mit lime dessen Integration in symfony voll ausschöpfen.
lime ist an einigen Stellen zu kurz geraten. Seine xUnit Konformität erschwert das Integrieren in Continuous Integration Tools, es fehlen Testsuiten und es ist rein prozedural um mal einige zu nennen.
Dafür geht es recht schnell von der Hand.
Diese Zusammenfassung muss so oder so ähnlich auch Bernhard Schussek (Web Mozarts) bewogen haben, sich an die Entwicklung von Lime 2 zu machen.
Sein erster Beitrag zum Thema, welcher mir bekannt ist, ist eine Gegenüberstellung von lime und PHPUnit im Juni 2009. Seine Zusammenfassung wie folgt:
PHPUnit…
- … ist verbose
- … bietet magische Methoden wie
setUp(), in denen die Testdaten (fixtures) vor jedem Test initiiert werden - … bietet weitere praktische Tools wie die Unterstützung von Mocks
lime…
- … ist kurz und bündig und gut lesbar
- … erfordert Code Wiederholung
- … erfordert manuelle Initiierung der Testdaten
Quelle: http://webmozarts.com/2009/06/30/easy-unit-testing/
lime kommt im direkten Vergleich also nicht so gut weg.
Bernhard hat sich aber auch gleich an die Entwicklung des sfLimeExtraPlugins gemacht, indem er Annotation Driven Tests implementiert.
(Mehr zu Annotations in PHP kann man hier sehr gut nachlesen: http://www.slideshare.net/stubbles/declarative-development-using-annotations-in-php)
(Das sfLimeExtraPlugin ist mittlerweile in Lime 2 aufgegangen und nicht mehr unter diesem Namen weitergepflegt)
Die Annotationen dienen dazu, den prozeduralen Code mittels Kommentaren zu strukturieren. Mit Hilfe der Extended Reflection API kann dieser Code quasi zur Laufzeit zu etwas grösserem “kompiliert” werden. Anstelle von repitativem Code legt man so das Verhalten mittels Kennzeichnungen fest.
Ein weiteres Feature ist das Testen von Exceptions, welches lime von Hause aus nicht mitbringt. Noch interessanter aber ist die automatische Erstellung von Mock/Stub Objekten, deren Klassen automatisch zur Laufzeit generiert werden. Bisher habe ich noch nicht damit rumgespielt. Auf der einen Seite klingt das unheimlich cool, auf der anderen kann ich es mir nur sehr schwer vorstellen, wie solche Klassen bei komplexeren Architekturen funktionieren sollen. Schliesslich geht es ja nicht darum, dass Methodenaufrufe von Mock Objekten irgendwas zurückliefern, sondern etwas realitätsnahes.
- Setup/Teardown Code siehe oben
- Unterstützung von Mock Objekt Generierung siehe oben
- Unterstützung von Exception Tests siehe oben
- Verbesserte Test Ausgabe die Ausgabe von lime hat Schwierigkeiten mit selbst-referenziellen Arrays und kann schonmal in eine Endlosschleife geraten
- Verbesserte Vergleichsmethoden das Vergleichen von Objekten, Arrays, Doubles und anderen Typen ist in lime z.T. nicht gut auf die jeweiligen Typen abgestimmt
- Verbessertes Fehler Management PHP Warnings und Notices gingen in lime oftmals unter
- Integration in CI Tools Lime 2 soll u.a. in Sismo und phpUnderControl integriert werden
Quelle: http://groups.google.com/group/symfony-devs/msg/2ddc8e013ebcf0bf
Das klingt doch alles sehr spannend. Vorf allem der letzte Punkt lässt auf xUnit Konformität hoffen, welche es ermöglichen würde Lime 2 in nahezu alle CI Tools zu integrieren.
Im selben Monat auf dem symfony Day 09 führt Bernhard seine Ideen noch weiter aus und zeigt einige Beispiele. Die Folien sind sehr lesenswert und zeigen, dass er tatsächlich mit der Materie vertaut ist.
Siehe: http://www.slideshare.net/bschussek/best-practice-testing-with-lime-2
Seit November ist dann die erste Alpha Version verfügbar.
Siehe: http://www.symfony-project.org/blog/2009/11/10/lime-2-alpha-released.
Das war jedoch bisher so ziemlich das letzte, was man hörte.. Gut, es ist noch nicht lange her und bisher kann man sich nicht über Bewegung beklagen.
Klar ist, dass Lime 2 als Test Framework in Symfony 2 angekündigt ist. Ebenso klar ist, dass es als Plugin oder ähnlich ebenso in symfony 1.x nutzbar sein wird.
Jedoch ist mir unklar, wie es weitergeht. Wie ist die Roadmap, wie ist der Stand der Entwicklung, wie der Stand der Dokumentation? Gibt es bereits Feedback von den Alpha Testern? Gibt es vielleicht bald mal eine eigene Website für Lime 2? Geht es nur mir so, oder fiebert noch jemand dem Erscheinen entgegen und will unbedingt mehr erfahren?
Die gute Nachricht ist, dass Bernhard jedenfalls nicht untätig ist. Der letzte SVN Commit ist noch garnicht so lange her.
Siehe: http://trac.symfony-project.org/log/tools/lime/
Ich bin jedenfalls weiterhin gespannt!
Annotations · Bernhard Schussek · lime · Lime 2 · PHP · phpUnit · symfony
-
http://webmozarts.com Bernhard

