TAG | Hudson
2
Eine PHPUnit TestSuite für ein symfony Plugin in Hudson CI einbinden
2 Comments · Posted by Christian in The real job
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…)
Continuous Integration · Hudson · Integrations Tests · phpUnit · symfony · Test Coverage · Tests · Unit Tests · xUnit
1
Warum ich für Unit Tests in symfony Projekten nun doch PHPUnit statt lime verwende
3 Comments · Posted by Christian in The right tool
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?
Continuous Integration · Hudson · Integrations Tests · lime · phpUnit · Sebastian Bergmann · symfony · Test Coverage · Tests · Unit Tests · xUnit
29
Wie ändern sich Tests, wenn sich die Implementation ändert?
No comments · Posted by Christian in The real job
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.
Continuous Integration · Functional Tests · Hudson · Integrations Tests · lime · PHP · symfony · Tests · Unit Tests · xUnit
27
lime Functional und Unit Tests für ein generiertes symfony Admin Module
1 Comment · Posted by Christian in The real job
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?
Continuous Integration · Functional Tests · Hudson · Integrations Tests · Konfiguration · lime · symfony · Test Coverage · Tests · Unit Tests
26
symfony lime Functional Tests in einem Plugin integriert in Hudson CI
1 Comment · Posted by Christian in The real job
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.
Continuous Integration · Functional Tests · Hudson · lime · symfony · Tests · xUnit
25
symfony lime Unit Tests in einem Plugin integriert in Hudson CI
No comments · Posted by Christian in The real job
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!
Continuous Integration · Functional Tests · Hudson · lime · symfony · Unit Tests · xUnit
19
Hudson unter eigener Domain betreiben – Jetzt aber!
1 Comment · Posted by Christian in The right tool
Nachdem ich in meinem gestrigen Post nicht viel brauchbares berichten konnte bin ich heute einen Schritt weiter.
Ich darf also meinen neuen Continuous Integration vHost http://automat.ical.ly präsentieren. Noch ist hier nichts los, es ist noch eine “vanilla” Installation. Aber was nicht ist, soll ja noch werden.
Ich möchte heute aber ein wenig weiter von meiner Leidensgeschichte berichten und vor allem, wie ich diese vorerst beenden konnte.
ajp · Apache · Continuous Integration · GMail · Google Apps · Hudson · init script · mod_proxy · mod_proxy_ajp · mod_proxy_http · vHost · Winstone
18
Hudson unter eigener Domain betreiben – Ein erster Fehlversuch
No comments · Posted by Christian in The right tool
Hmm.. ich dachte ich könnte heute erstmal damit glänzen meine Hudson Installation unter http://automat.ical.ly laufen zu lassen.
Aber Pustekuchen!
14
Hudson installieren und ein Subversion Projekt anlegen
No comments · Posted by Christian in The right tool
So, jetzt setze ich mich endlich hin und mache mich daran Das Continuous Integration Tool Hudson zu testen.
Wie auch CruiseControl ist Hudson in Java implementiert und um so ein Java Webtool zu installieren gibt es vier mit bekannte Wege:
- Installation eines Java Servers wie Tomcat or JBoss und deployen der Hudson .war Datei
- Statt eines solchen “grossen Servers” started man einen Servlet Container wie Jetty
- Man startet die .war Datei als einfachen Java Prozess
Die letzten beiden Wege werden meist nicht für den Produktiv Einsatz empfohlen, da ihnen viele Features eines “richtigen” Webservers fehlen. Für meine Testzwecke sind sie aber vollkommen ausreichend. Sollte ich mich final für Hudson entscheiden, kann ich mich immer noch mit Tomcat oder JBoss beschäftigen.
Ich gehe also den dritten Weg und starte einen einfachen Prozess. Zuvor starte ich jedoch eine screen Session, damit ich meine SSH Verbindung verlassen kann, ohne das Tool zu beenden.
$ screen -S hudson
$ java -jar hudson.war --httpPort=8081
// <ctrl>+<a> <d> zum Verlassen der screen Session
// $ screen -r hudson zum Betreten der screen Session
Nun sollte Hudson bereits unter Port 8081 laufen.
Hudson läuft brav und artig. Cool! Bis hierhin war es einfach.
13
Wann folge ich einem Standard und wann suche ich eine Alternative?
3 Comments · Posted by Christian in The right tool
Ich bin seit gestern geschäftlich auf Reisen und sitze nun in meinem Hotelzimmer und habe nicht mehr allzu lange Zeit, um noch einen Beitrag hier zu schreiben. Und natürlich hatte ich auch gestern Abend keine Gelegenheit mehr, mich praktisch mit irgendetwas diesen Blog betreffendem auseinanderzusetzen. Doof, wenn man doch eigentlich versucht täglich was zu schreiben..
Aber Gedanken habe ich mir gemacht und zwar über den Kommentar von Christian Weyand zu meinem gestrigen Post.
Er freute sich über den Tipp sich doch mal mit Hudson zu beschäftigen. Offensichtlich bekam er seine phpUnderControl Installation zusammen mit PHPUnit Tests nicht so zum laufen, wie gewünscht. Meine direkte Antwort war allerdings sich doch intensiver mit den Macher und Nutzern von PHPUnit und phpUnderControl auseinanderzusetzen, weil diese Kombination nach meinen Recherchen deutlich verbreiteter ist, als PHPUnit mit Hudson. Ergo sollte dort wesentlich mehr Hilfe im Netz zu erwarten sein.
Jetzt muss ich mir aber auch die Frage stellen, warum ich selber denn Hudson ausprobieren will.


