test.ical.ly | getting the web by the balls

TAG | lime

I just wrote two functional tests for the sfBulkUploadPlugin I introduced in yesterdays post.

I haven’t written functional tests in a while so it took me some time to remember what you have to do to be able to run them from within your plugins fixture project. In case you stumble about the same question here’s the answer. (more…)

· · · ·

Yesterday I wrote a lot of functional tests for a symfony plugin that provides and XML web service interface.

Using symfonys functional testing classes this is actually quite easy to do.

But wouldn’t it be cool if you could integrate these tests into your continuous integration service just like PHPUnit tests? Wouldn’t it be cool to be able to generate PHPUnit coverage reports?

(more…)

· · · · · · ·

Gerade erst gestern habe ich mich hier öffentlich gewundert, warum das Thema Testing auf der Symfony Live 2010 keine Rolle spielte als Symfony 2.0 enthüllt wurde. In den Sourcen von Symfony 2.0 war nur lime bzw. Lime2 zu entdecken.

Twitter

Nun scheint die Antwort gefunden zu sein.

(more…)

· · · · · · ·

Seit einigen Tagen ist Symfony 2.0 mehr als nur eine Ankündigung und ist zugänglich für Entwickler.

Symfonys Templating ist neu, die Controller Schicht ist neu, die Filterchain ist vollständig durch den Event Dispatcher ersetzt, das ORM ist neu und das – ebenfalls recht neue – PHP 5.3.1 ist vorrausgesetzt.

Wie aber sieht es mit der Testabdeckung aus? Während der Vorstellung auf der Symfony Live 2010 war vom Testen keine Rede. Ist vielleicht jetzt der Schritt weg von lime hin zu PHPUnit vollzogen worden?

(more…)

· · · · ·

Gestern wurde ich von einem Kollegen (danke Nils) auf das Blog whitewashing von Benjamin Eberlei aufmerksam gemacht. Benjamin ist ein aktiver Contributer verschiedener Open Source Projekte und hat viele interessante Posts geschrieben.

An einem Beitrag bin ich etwas hängengeblieben. Er hat auf der IPCSpring im letzten Jahr einen Vortag über Frameworks und ihren Umgang mit Tests gehalten. Man muss ein wenig googlen, um seine Slides zu finden, aber zu finden sind sie schliesslich auf Slideshare.

Benjamin stellt das Zend Framwork, symfony, ezComponents und CakePHP gegenüber und beurteilt recht objektiv folgende Kriterien:

  • Einstellung des jeweiligen Projektes zum Thema Tests
  • Anzahl der vorhandenen Unit Tests
  • Eingesetztes Testing Framework
  • Code Coverage
  • Code Duplication

Seine Ergebnisse sind nicht besonders überraschend. Oder doch?

(more…)

· · · · ·

Letzte Woche sprach mich ein Kollege auf meine Entscheidung an, lime statt PHPUnit und Hudson statt phpUnderControl zu verwenden. Er zeigte sich sehr kritisch vor allem gegenüber lime. Als ein Argument warf er in den Raum, dass ein weiterer Kollege – aus der Java Entwicklung kommend – nach circa 15 Minuten mit lime sinngemäss das Resumé zog “So einen Sch*** verwende ich bestimmt nicht!”. Und tatsächlich so war es gewesen. Ich habe mittlerweile ja einige eigene Erfahrungen mit lime gesammelt und kann nun, denke ich, etwas differenzierter argumentieren.

Das Resultat nimmt bereits die Überschrift vorweg. Die Frage ist: warum der Wandel?

(more…)

· · · · · · · · · ·

Ich war gestern Abend nicht gerade mega-produktiv, aber kleinere Änderungen habe ich doch umsetzen können (man beachte bitte, dass dieses Blog ein rein privates Vergnügen ist, ich muss ja schliesslich auch noch einer anstaendigen Arbeit hinterhergehen..).

Auf meiner zukünftigen News-Aggregator-irgendsowasinderart-Seite symfon.ical.ly habe ich bisher eine einfache Liste von News gehabt. Eine News kann einen Tiel, ein Bild, eine Bildunterschrift und einen Text haben.

  • Neuerung Nummer 1: Da ich irgendwann mal mehr als nur 5 Dummy Nachrichten auf der Seite haben will, kann die natürlich recht lang werden. Also brauche ich eine Paginierung!
  • Neuerung Nummer 2: Auf der ersten Seite will ich die allerneueste Nachricht besonders prominent darstellen, während alle nachfolgenden News gleich aussehen können.

Da ich hier garnicht wirklich ein wie-mache-ich-was-mit-symfony-Blog schreiben will und die beiden Anforderungen auch wirklich in sich nicht so spannend sind, werde ich nicht gross darauf eingehen, was ich tatsächlich implementieren musste*.

Viel Interessanter ist doch, wie sich neue Anforderungen auf die bisherigen Tests auswirkt und wie gut sich neue Test hinzufügen lassen.

* Wenn jemand trotzdem an meinem Code Interesse hat, schreibt es einfach in nen Kommentar und ich schau mal, was sich machen lässt.

(more…)

· · · · · · · · ·

Nachdem ich Montag meinen ersten Unit Test geschrieben und in Hudson integriert habe und gestern den ersten dazugehörigen Functional Test, will ich heute gleich damit weiter machen.

So habe ich mir zugehörig zu meinem News Model von symfony/Doctrine ein Admin Module generieren lassen.

Hierstellt sich auch gleich die erste Frage: Soll man generierten Code mit Tests versehen? Und wenn ja: was?

(more…)

· · · · · · · · ·

So nachdem ich gestern bereits die Unit Tests zum laufen gebracht habe, zeige ich heute nochmal die ersten Functional Tests.

Im Grunde genommen gehe ich genauso vor, wie bei den Unit Tests. Ich hatte lediglich ein paar Besonderheiten im Bootstrapping zu befolgen, aber dazu gleich mehr. Unter http://automat.ical.ly/job/symfon.ical.ly/ könnt ihr ja schon sehen, dass ich bereits ein paar Testlöufe gemacht habe.

(more…)

· · · · · ·

Ich habe mich am Wochenende mal wieder hingesetzt und mit meinem kleinen Testprojekt http://symfon.ical.ly gespielt. Was mir bereits letzte Woche aufgefallen war, ist dass so ein Testprojekt irgendwie doch eine Idee braucht. Eine kleine reicht schon aus, aber ein Projekt nur um Tests auszuprobieren alleine reicht nicht. Man verbingt mehr Zeit damit sich neue Anforderungen auszudenken, als sich mit dem Rest zu beschäftigen.

Also hier ist die Idee: Eine einfacher Newsaggregator, der eine kalendarische Liste von Nachrichten anzeigt, die manuell oder später auch automatisch eingegeben werden können. Es wird einen Feed geben und Pagination. Und natürlich Tests!

(more…)

· · · · · ·

Older posts >>

Theme Design by devolux.nh2.me