|
|
#1 (permalink) |
|
Multitalent
|
Ich versuche gerade Simpletest in ein Projekt einzubinden (besser spät als nie
), was soweit auch funktioniert. Die Tests laufen und bringen die gewünschten Ergebnisse. Nur möchte ich eben auch so früh wie möglich im Testaufbau erkennen können, welche Bereiche überhaupt (schon) mit den Tests abgedeckt wurden.Zwar hat Simpletest in der Dokumentation eine Extension namens CodeCoverage, aber auch in der 1.1alpha3 ist bei den Dateien nichts zu finden. Mit PHPUnit habe ich mal eine Weile geliebäugelt, das kommt mir aber nicht auf den Server. Einzig hierfür habe ich aber einen Visualiser gefunden, der aber natürlich nicht eigenständig lauffähig ist. Ich habe auch versucht mich in die xdebug-Funktionen einzufinden, aber deren Verhalten ist noch etwas gewöhnungsbedürftig, zumal ich das Rad ja quasi neu erfinden müsste. Spontan würde die über xdebug_get_code_coverage() gefundenen Zeilennummern mit einer zeilenweisen Analyse des jeweiligen php-Quelltextes abgleichen, um herauszufinden welche Klasse/Methode/Funktion in welcher Zeile anfängt und was dementsprechend benutzt wurde oder nicht. Und dann würde ich mich vermutlich rumärgern, weil leere oder Kommentarzeilen gar nicht als benutzt erscheinen.. Gibt es also irgendwo eine eigenständige lauffähige Klasse um xdebug vernünftig auszuwerten? |
|
|
|
| Gesponsorte Links |
|
|
#2 (permalink) | |
|
return void
|
Zitat:
Was stört dich denn daran? Code-Coverage mit Xdebug geht da auch ohne, dass man irgendetwas selbst machen muss. Das man 3 Jahre (!!!) brauchte um für SimpleTest eine neue Version herauszubringen und diese dann sogar nur eine Alpha ist, würde ich dieses Projekt als alles andere als aktiv bezeichnen. |
|
|
|
|
|
|
#3 (permalink) | |||
|
Multitalent
|
Ich bekomme PHPUnit einfach nicht in Gang. Das mag an einer anderen Abneigung liegen, nämlich dieser pear-geschuldeten Pfadstruktur. Meine Vorliebe geht Richtung relativer Pfadangaben - absolute Pfade oder gar "globale" Pfade sind mir total unsympatisch.
Die Einbindung eines externen Tools stelle ich mir so vor: PHP-Code:
|
|||
|
|
|
|
#4 (permalink) | |||||||||
|
return void
|
Eigentlich ist es viel einfacher
Diese manuelle Angabe des PHPUnit-Ordners brauchst du nicht, dein Pear-Ordner ist bei jeder PHP-Installation automatisch im include_path. einfach per pear installieren: Code:
PHP-Code:
Code:
Deswegen fragte ich, warum es dir so missfällt. Es ist extrem einfach installiert, und der erste Test ist auch in wenigen Sekunden geschrieben. Und es macht eben keine Probleme. Wenn dir ein Runner für den Browser besser gefällt, geht das auch, sind aber eben 5 Zeilen mehr Code. Wenn du PHPUnit nutzt, hast du auch den Vorteil das Jenkins PHP-Template nutzen zu können und mittels Jenkins (Continous Integration Server) bei jedem Commit, FileChange, Build-Prozess oder was auch immer deine Software Testen, Packen und Publishen zu können. |
|||||||||
|
|
|
|
|
#5 (permalink) |
|
Multitalent
|
Mir ist schon klar, dass das Konzept von pear ist. Und genau da liegt mein Problem. Wenn ich jetzt auf die Schnelle richtig nachgeschaut habe, hat sich das mit der Path-Angabe auf Systemebene nicht geändert. Jedenfalls war das noch so, als xampp mal 25 php.ini's hatte.
Lokal nutze ich Xampp Portable und das immer mal an anderen Computern. Ich bin schon froh, wenn ich Apache halbwegs vernünftig konfiguriert habe, alle notwendigen php-Extensions laufen und sich Apache nicht nach dem Start sofort wieder verabschiedet. Ich werde verrückt, wenn es dann ständig noch zusätzliche Systemabhängigkeiten gibt und sei es nur wegen wechselnden Laufwerksbuchstaben. Bekomme ich pear also auch ohne Systemanpassung und ohne Laufwerksangabe hin? Spontan habe ich nichts gefunden, was meine ursprünglichen Befürchtungen (vielleicht sind sie wirklich übertrieben, aber so ist es nunmal) verschwinden lassen könnte. |
|
|
|
|
#6 (permalink) |
|
return void
|
Ich weiß nicht wie Xampp Portable die dauernden Laufwerksbuchstaben behandelt, was passiert denn, wenn du einfach mal versuchst PHPUnit zu installieren und zu nutzen?
Ansonsten installiere es eben nur an einem Rechner und kopiere dir dann alle Dateien in einen Ordner deines Projektes. Durch Xampp Portable sind eben viele Probleme hausgemacht. |
|
|
|
|
|
#7 (permalink) | |
|
Multitalent
|
Nö geht sogar besser als gedacht. Neuerdings* ist pear sogar vorinstalliert und der include_path ist ohne Laufwerksbuchstaben. Für PHPUnit musste ich jetzt zwar eine neue Version und noch ein paar Abhängigkeiten nachinstallieren, aber grundsätzlich ist es machbar.
AUßER... Zitat:
*Wie gesagt habe ich schon länger nicht mehr geprüft, ob sich da was geändert haben könnte. |
|
|
|
|
|
#8 (permalink) | ||||
|
return void
|
Zitat:
(habe ich oben gezeigt) Wenn es dir aber nur um die Ausgabe geht, kann man auch den PHP-Runner aktivieren: PHP-Code:
|
||||
|
|
|
|
|
#9 (permalink) |
|
Neuer Benutzer
Reg: 18.09.2011
Beiträge: 23
![]() |
Hallo joschilein,
in meinen Augen hat ice-breaker mit dem Hinweis auf die Kommandozeile etwas total wertvolles angemerkt: Ich habe PHPUnit in meinem vorletzten Projekt massiv genutzt und es war Gold wert. Ich habe mir selbst die Arbeitsumgebung so organisiert, dass ich immer auch auf der Kommandozeile arbeiten kann. Unter Mac OS X eh kein Problem. Unter Windows habe ich mir den WAMPserver installiert, sowie Cygwin und MinTTY. Als ich dann anegfangen habe mit einem Freund gemeinsam an dem Projekt zu arbeiten, haben habe ich außerdem einen VSever gemietet und wir beide haben alle Tests nur noch auf dem Server gemacht, um einen einheitlichen Bezugspunkt zu haben. War Aufwand, hat sich aber total gelohnt: An PHPUnit ist unter anderem auch so genial, das es Abhängikeiten unterstützt. Wenn in einem größeren Projekt mal in einer grundlegenden Funktion ein Fehler ist, kommen viele Fehlemreldungen zu Folgefehlern. Wenn die Abhängigkeiten korrekt markiert sind, bleibt alles übersichtlich ... Wenn Deine Skripte in einem Ordner ProjektOrdner liegen und Deine Tests in ProjektOrdner\Tests, kannst Du auf der Komamndozeile alle Tests ausführen mit cd ProjektOrdner phpunit Tests Wenn Du gerade genau weisst, das alles O.K. ist aber nur die eine Klasse Probeleme macht, kannst Du auch gezielt nur die testen: phpunit Tests\DieEineKlasse.php Ich hab' selbst die Einrichtung einer guten Arbeitsumgebung eine Weile vor mir hergeschoben. Letztendlich habe ich mich dann aber doch aufgerafft. Dazu möchte ich Dich ermutigen. Ja, war Arbeit. Und sie hat sich doppelt und dreifach gelohnt. Freudige Grüße! Timon |
|
|
|
|
|
#10 (permalink) | ||||||
|
Multitalent
|
Hmm also ich hänge immer noch etwas, auch weil ich im Manual einfach keine gescheiten Antworten darauf finde
Mein Dateiaufbau sieht grob gesagt so aus:
class.A.php PHP-Code:
PHP-Code:
|
||||||
|
|
|
|
#11 (permalink) |
|
return void
|
Da du scheinbar einen eigenen TestRunner bauen willst, wirst du dich da mal einlesen müssen. Wie man den PHP-Runner anstößt, habe ich ja bereits oben gezeigt. Diesen kannst du also als Grundlage nutzen.
Nebenbei bietet die Kommandozeilen-Variante viele Ausgabe-Formate, du kannst dir z.B. einen kompletten Report als XML ausgeben lassen, da steht dann jeder Test samt Ergebnis drinne, diesen müsstest du nur noch parsen. Allerdings erscheint mir das alles sehr suspekt! UnitTests werden immer durchgeführt, bevor das Projekt deployed wird, von daher wirst du nie die UnitTests auf einem produktiven Server finden, die haben da einfach nichts zu suchen. |
|
|
|
|
|
#12 (permalink) |
|
Multitalent
|
Dann sag mir mal bitte wo ich anfangen soll zu lesen. Ich habe das Manual schon ein paar Mal hoch und runter quergelesen und keinen gescheiten Einstieg gefunden.
Und natürlich dienen die Tests nicht insbesondere dem Produktivsystem. Aber letztlich hängen viele Dinge eben auch von den Servereinstellungen bzw. -voraussetzungen ab und auch dafür möchte ich im Hintergrund des Produktivsystems die Tests laufen haben, um eben solche unerwünschten Veränderungen schneller feststellen zu können. Für manches habe ich mir natürlich schon große Warnungen gebastelt (z.B. bei fehlenden Schreibrechten im Cache-Verzeichnis), aber das könnte ja auch einfach in die anderen Tests integriert werden und das Gefrickel an verschiedenen Stellen entfällt. Dann gibt es noch die paar Dinge, die ich offline nicht gebacken bekomme, z.B. das kürzliche Thema Schlüsselerstellung, was ich dann eben erst online richtig testen kann. Als Entwarnung sei auch noch erwähnt, dass ich nie direkt im Produktivsystem rumspiele. Ich habe für jede Version des Gesamtsystems einen separaten Hauptordner und kann die über htaccess sauber umschalten. Wenn also eine neue Version hochgeladen wird, laufen die Produktivanfragen weiterhin auf die alte Version und die neue kann nebenbei, zusätzlich zu den vorherigen Offline-Tests, getestet werden. |
|
|
|
|
#13 (permalink) |
|
return void
|
Da kann ich dir nicht helfen, der Sinn hinter PHPUnit ist nicht, dass sich jeder einen eigenen Runner baut, von daher steht so etwas auch nicht im Manual. Jeder andere würde dann auch einfach PHPUnit auf dem Deployment-Server auf der Kommandozeile ausführen...
|
|
|
|
|
|
#14 (permalink) | |
|
Erfahrener Benutzer
|
Zitat:
Welche speziellen Tests willst Du denn haben, bzw. was willst Du denn überwachen? |
|
|
|
|
![]() |
| Gesponsorte Links |
| Anzeige |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|