Tests Ausführen
Manueller Aufruf von Tests
der PHPUnit test wird an der Konsole, per "phpunit" Kommando aufgerufen. Voraussetzung dafür ist, dass das PECL Paket PHPUnit installiert ist. Ein Test wird stest aus dem Ordner der Applikation heraus aufgerufen, damit die Klassennamen zum angegebenen Pfad passen:.z.B.:
~/redspark/application/RedSparkBlog/latest$ phpunit RedSparkBlog/RsModule/Blog/Test/Suite.php
Ein fehlgeschlagener Test bedeutet nicht zwangsläufig einen Fehler im System. Vielmehr kann der Fehler auch durch die Testumgebung selbst ausgelöst werden, da z.B. der Request gegen ein Controller_Request_Cli Objekt ausgetauscht wird. Der Einsatz eines Debuggers wie X-Debug kann gerade im Test-Umfeld sehr hilfreich sein.
Integration in Hudson
Ein ANT-build script für Redspark Projekte ist zur Zeit in Arbeit. Bislang können Projekte nur als Freestyle-Projekte angelegt werden, in welchem bash-befehle zum Einsatz kommen.
Source-Code-Management
Hier wird das Redspark Grundsystem, sowie die zu testende App und benötigte Referenz-Apps angegeben:
Repository URL: http://svn.redsparkframework.com/framework/base/trunk
Lokales Modulverzeichnis: .
Repository URL: http://svn.mypage.de/apps.myapp/trunk
Lokales Modulverzeichnis: application/MyApp/latest
Buildverfahren
# Install
chmod 777 temp log htdocs/static
chmod -R 777 application/MyApp/data
# Develop.ini
echo "[Libraries]n" > config/develop.ini
echo "tPHPUnit = "3.4.5";n" >> config/develop.ini
echo "[Database]n" >> config/develop.ini
echo "thost = "localhost";n" >> config/develop.ini
echo "tusername = "user";n" >> config/develop.ini
echo "tpassword = password";n" >> config/develop.ini
echo "[Ini]n" >> config/develop.ini
echo "tmemory_limit = "512M";n" >> config/develop.ini
echo "tmax_execution_time = "360";n" >> config/develop.ini
echo "[Domains]n" >> config/develop.ini
echo "tredirect_to_main_host = 0;n" >> config/develop.ini
echo "[UnitTest]n" >> config/develop.ini
echo "tselenium_url = "http://localhost";n" >> config/develop.ini
# Bootstrapping
echo "[Bootstrap]n" > config/bootstrap.ini
echo "tsite_is_live = false;n" >> config/bootstrap.ini
echo "[Domains]n" >> config/bootstrap.ini
echo "tdefault = "MyApp/latest";n" >> config/bootstrap.ini
# PHPUnit
cd library/phpunit/3.4.5
rm_require_once.sh
cd $WORKSPACE
# Folder for test results
if [ ! -d temp/clover ]; then mkdir temp/clover; fi
if [ ! -d htdocs/static/coverage ]; then mkdir htdocs/static/coverage; fi
# Unittest
cd application/MyApp/latest
#phpunit --coverage-clover ../../../temp/coverage.xml --coverage-html ../../../htdocs/static/coverage --log-xml ../../../temp/junit.xml MyApp/Test/Suite.php
phpunit --log-xml ../../../temp/junit.xml MyApp/Test/Suite.php
#phpcs --standard=Redspark Redspark/*.php --report=checkstyle --report-file=../../../temp/checkstyle.xm
Selenium + Hudson
Auf Linux Systemen ist es möglich, einen Selenium-Server mit einem Firefox zu installieren, auch wenn kein Bildschirm an den Rechner angeschlossen ist. Ein schönes Tutorial dazu findet man auf http://www.alittlemadness.com/2008/03/05/running-selenium-headless/.