New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added Unit tests #55
Added Unit tests #55
Conversation
…into unittest Conflicts: test/CHANGELOG.md test/README.md
Sobald die Unit Tests drin sind würde ich gerne zwei weitere PRs auf Basis dieses einstellen:
Beide Lösungen sind fertig, aufgrund der Abhängigkeiten möchte ich bei der Reihenfolge aber keine Verwirrung stiften ;) |
magst du (auch fuer phpunit-neulige) ein paar worte dazu sagen, wie man die tests ausfuehrt, das mit dem web-interface ist sicher praktisch, zum ausfuehren auf der kommandozeile wohl einfach 'phpunit' im test/ verzeichniss. allgemein erscheint es mir unguenstig, fuer das ausfuehren der tests einen webserver zu brauchen? sorry fuer die vielen rueckfragen... |
ach ja, und eigentlich sollte ja htdocs/ das docroot sein, |
Erstmal vorweg- die Sache ist nicht ganz trivial und hat sicher Verbesserungspotential. Ich halte den Weg dennoch für wertvoll, also arbeiten wir dran!
Klar- ich mach's jetzt mal hier in englisch damit wir das evtl. wieder nutzen können wenn wir die passende Stelle dafür gefunden haben: Unit tests require installation of PHPUnit, the de facto standard for unit testing under PHP. For installation details please see http://phpunit.de/manual/current/en/installation.html
@root: ich hatte auch überlegt PHPUnit direkt mit ins repository aufzunehmen. Da es prinzipiell aber nur für die Entwickler interessant ist und diese sowas am Start haben sollten (oder wissen woher es kommt) habe ich mich dagegen entschieden.
Spannend. Gibt es den Pfad? Im Git sollte er vorhanden sein? Falls es nochmal die Möglichkeit gibt mir das auf Deinem Rechner anzuschauen gerne.
Jaein. Per bash kann das Script die Server URL nicht herausfinden, jedenfalls wüsste ich nicht wie. In der aktuellen Version habe ich die Tests daher per phpunit.xml auf den PHP-internen Webserver verlagert und ein entsprechendes bootstrap Skript hinzugefügt.
Kann sein, aber andere Tests habe ich nicht und diese prüfen das Verhalten der MW. Wer bessere hat kann diese nehmen...
Keine Ahnung.
Siehe oben- die Abhängigkeit zum Webserver ist über PHP aufgelöst.
M.E. nicht da die auf einem produktiven System nix zu suchen haben. U.a. braucht der AggregationTest (ein weiterer Branch bei mir) erhebliche Laufzeit und ich wollte nicht dass unautorisierte sowas auf einem produktiven Server ausführen. OK? |
Added README.md to test folder, visible when checking in github. |
Und nochmal eine Idee was man draus machen kann: https://travis-ci.org/andig/volkszaehler.org |
Ich habe jetzt nochmal untersucht ob sich die UTs nicht auch ohne Webserver ausführen lassen. Dafür habe ich Wrapper für Router, HTTP Request und Response geschrieben um die Ergebnisse abzufangen. "Im Prinzip" funktioniert es, hat aber einen grundsätzlichen Haken: sobald die Verarbeitung in eine Exception läuft die im View ausgegeben wird (bzw im ExceptionHandler), stoppt das Skript. |
sorry, das ist alles ein missverstaendniss, ich werd' die version mit dem fix nochmal testen und dann wohl mergen! |
macht für mich eigentlich keinen Unterschied. Der Webserver ist keine "echte" Abhängigkeit da der für VZ ja ohnehin laufen muss, natürlich muss die Konfiguration aber sauber sein und funktionieren (keine hardcodierten Pfade wie in meinem ersten Anlauf :/) Ein erheblicher Vorteil ohne Webserver (da hast Du mich drauf gebracht...) bestünde darin, dass sich ohne auch die Code Coverage testen ließe, aktuell mit WS geht das nicht. Alle Testfälle im moment beruhen auf "sauberer" Verarbeitung, es wäre also nicht mal ein Problem wenn Exceptions direkt von PHPUNIT verschluckt würden ohne dass die Test Cases dies in Form von JSON Responses verarbeiten können. Long Story short: ich schlage vor die aktuelle Version zu committen und ich schaue mal in Ruhe ob es da nicht eine Möglichkeit gibt dennoch ohne WS zu testen, dann halt nicht alle Aspekte. |
Mit den Testcases erreichen wir folgende Code Coverage:
|
tthuermer@mc12[ und nach wie vor: http://dhcp4.nonsens/~tthuermer/volkszaehler.org/test/app/public/ werd's nochmal ausserhalb vom userdir testen, aber sehe nicht, warum es da nicht laufen sollte. |
Added base set of unit tests using PHPUnit and VisualPHPUnit as frontend.
Included is one logical fix to DataIterator.php to make the test cases behave sanely.