Nachdem ich nun ein Jahr nichts mehr gebloggt habe, gibt es jetzt doch nochmal etwas zu schreiben. Endlich habe ich alle Klausuren und Assessments hinter mir! Und die auch alle äußerst erfolgreich abgeschlossen. Bin sogar knapp an meinem Abschluss mit cum laude vorbeigerauscht – ein wenig ärgerlich…
Jetzt steht mir noch meine Diplomarbeit bevor, die am 5. Februar 2007 beginnt. Und zwar schreibe ich meine Diplomarbeit beim Online-Auktionshaus My-Hammer.de, einem Tocherunternehmen der Abacho AG. Im Januar habe ich mich bereits in das System einarbeiten können. Dabei habe ich auch schon das ein oder andere neue Feature programmiert, das auch schon in Aktion ist. Die Arbeit in dem jungen Team Entwicklung ist sehr angenehm. Ich freue mich schon ungemein auf mein Diplomprojekt, auch wenn ich feststellen musste, dass schon eine lange Wunschliste für mein Projekt existiert (vorwiegend aus dem Service).
In den letzten Tagen habe ich mich mit dem Thema UnitTests für PHP5 auseinandergesetzt. Widererwartens bin ich da auf eine Menge Frameworks gestoßen. Letzten Endes habe ich mich jedoch für PHPUnit entschieden, da es die umfangreichste und am besten strukturierte Umsetzung eines UnitTest Frameworks ist. Es ist eine komplette Prortierung von JUnit zu PHP5, das ich während meines bisherigen Studiums oft genutzt habe. Im Gegensatz zu JUnit geht PHPUnit sogar noch einen Schritt weiter. Neben den üblichen TestCases und TestSuites sind hier auch ohne eine weitere Extension CoverageTests (bei JUnit Hansel) möglich. Hier mal die offizielle Featureliste von phpunit.de:
- Complete port of JUnit 3.8.1 to PHP 5].
- Supports Mock Objects (port of jMock).
- Supports Code Coverage Analysis (utilizing the Xdebug extension for PHP) and can generate reports based on this information.
- Supports Incomplete Tests (port of junitour) and the skipping of tests.
- Supports Agile Documentation (port of TestDox).
- Supports generation of test code skeletons for existing code.
- Supports logging of test execution in an XML Format, as JavaScript Object Notation (JSON) messages, using the Test Anything Protocol (TAP), in GraphViz Markup, and to PEAR::Log sinks.
- Integrates with Selenium RC for web application user interface testing.
- Integrates with CruiseControl for Continuous Integration.
- Integrates with Phing.
- „Self-Hosted“ and Robust: PHPUnit is covered by a Test Suite that ensures it works correctly.
Zwar ist die Einrichtung von PHPUnit ein wenig umfangreich, sofern man es manuell macht und nicht via PEAR, doch lohnt es sich am Ende auf jeden Fall. Neben der Installation gibt es noch ein weiteres Manko: wenn man einen schönen Report in HTML haben möchte, dann braucht man die PHP-Extension XDebug. Dies hingegen zieht ein weiteres Problem nach sich: es ist derzeit nicht mit Zend kompatibel. Das heißt, man muss die Zend-Extensions alles deaktivieren. Somit empfielt es sich, ein komplett eigenes System aufzusetzen, auf dem man testet.
Ich hoffe, dass ich jetzt wieder öfter mal was schreiben werde. Es sind immerhin schon einige neue HowTo’s geplant Unter anderem ein kleines Howto, wie man PHPUnit manuell (ohne PEAR) unter Windows mit XAMPP installiert und benutzt. Mal sehen, ob ich mich auch wirklich dazu aufreffen kann, die Texte zu schreiben. Da ich das frühe Aufstehen und 8 Stunden Arbeiten absolut nicht mehr gewohnt bin, bin ich nach Feierabend doch häufig zu Müde, um noch etwas produktives zu machen. Nunja, abwarten…