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

TAG | Integrations Tests

I’ve got this one question puzzling me for quite some time now and I got to get it off my chest.

An just to make sure there are no misunderstandings: I am not about to question TDD!

I am merely asking for help to find my way to do it properly..

(more…)

· · · · · · ·

elephpantEarlier this year I decided to go with Hudson as my Continuous Integration Server for testing my symfony plugins.

Earlier this week I installed phpUnderControl and wrote about setting up both phpuc and Hudson-CI.

Now what should you use? Here I try to summarise my experience and compare the two. (more…)

· · · · · ·

PHPUnit-testing-symfony-in-HudsonYesterday I wrote about setting up a symfony plugin project in phpUnderControl. However so far I’ve been using Hudson as my Continuous Integration server. So before comparing the two I will explain how to achieve yesterdays setup using Hudson. (more…)

· · · · · · · · · ·

PHPUnit-testing-symfony-in-phpUnderControlAs I’ve just started to look into phpUnderControl again I thought why not try to setup a project for testing sfImageTransformExtraPlugin running all the PHPUnit tests that I wrote about last week.

So the goal is to setup a phpuc project for a single plugin but with all dependencies (symfony itself) provided. This was a bit tricky so here we go! (more…)

· · · · · · · · · · ·

Nun also PHPUnit. Wie man die beiden neuen Tests einzeln ausführt habe ich bereits gestern gezeigt. Allerdings ist es wenig sinnvoll, wenn ich in meinem Continuous Integration Tool jeden Test einzeln konfigurieren muss.

Bevor ich meine Tests in Hudson konfiguriere und auswerten lasse, muss ich dafür sorgen, dass sie zusammengefasst ausgeführt werden können, so dass ich nicht jeden neuen Test Case wieder konfigurieren muss. Das wäre sehr hinderlich, weil es dem Ansatz des automatisierten Testens wiederspricht.

PHPUnit stellt hierfür sog. TestSuites bereit, wie in der Dokumentation beschrieben. Hier gleichmal meine aktuelle Lösung und danach die Erklärung der einzelnen Zeilen.
(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…)

· · · · · · · · ·

Ich muss zugeben, dass ich am Wochenende mich nicht wirklich viel mit PHP beschäftigt habe und von daher bin ich auch noch nicht richtig weitergekommen, was meine symfony/lime Integration in phpUnderControl angeht. Aber andere waren aktiv!

So habe ich über einen symfony Feed erfahren, dass sich das Team hinter dem Diem Projekt ebenfalls mit Continuous Integration beschäftigt hat. Diem ist ähnlich wie Sympal ein Content Management Framework auf Basis von symfony.

Testergebnisse mehrerer Builds visualisiert von Hudson

Testergebnisse mehrerer Builds visualisiert von Hudson

In ihrem Blogpost schreiben die Entwickler von ihrer Lösung, die sie bereits online erreichbar gemacht haben und deren aktuellste Entwicklung sogar via RSS Feed oder Twitter verfolgbar ist. Anstatt auf phpUnderControl zu setzen, haben sie sich für Hudson entschieden, eine wie CruiseControl auf Java basierende CI Lösung. Ansonsten schreiben sie nicht viel, verweisen aber auf den Blogpost von Nicolas Perriault, der sie bei ihrer Lösungsfindung massgeblich beeinflusst hat. Ich habe das mal zum Anlass genommen, mir diesen Blogpost mal genauer anzuschauen und vielleicht ja auch etwas daraus mitzunehmen.

(more…)

· · · · · ·

Theme Design by devolux.nh2.me