Eines der besten Instrumente um Code zu verbessern sind Test, speziell Unit Tests. Unit Test sind für alle erdenklichen Programmiersprachen verfügbar und wenn nicht, dann schreibt man sich den Test selbst, ohne Frame Work. Mit Hilfe der Unit Test können Fehler einfach aufgedeckt werden dazu muss man nicht nur die Test haben, sondern sie auch permanent ausführen. Dieses permanente Ausführen ist die Aufgabe des Continouse Integration Servers, z.B. Jenkins. Alternativ gibt es auch die Unit Integration in die IDE. Wem selbst der Jenkins oder die IDE zu langsam ist, schnelle Roundtripzeiten bedeuten effizientes Entwickeln, der kann sich mit Hilfe eines einfachen Scripts seine Test ausführen, wenn sich etwas am Quellcode der Software oder der Test geändert hat (File save).
Hier ein Beispiel für den Mac, dass Unit Test für R ausführt und den Entwickler per Notification auf Fehler bei der Testdurchführung hinweist. Zuerst muss per Homebrew fswatch installiert werden. Dann muss dieses Script ins Root Verzeichnis deines Projektes abgelegt werden. Dann muss es starten. Es läuft ohne Unterbrechung solange, bis man via
CRTL + C abbricht. Alternativ kann man das Script für andere Umgebungen anpassen.
#!/usr/bin/env bash
runX=true
finish (){
runX=false
}
trap finish SIGINT
runTests(){
for SCRIPT in src/test/*
do
if [ -f $SCRIPT -a -x $SCRIPT ]
then
$SCRIPT
if [[ $? -ne 0 ]]
then
FAILEDTESTS=${FAILEDTESTS}"\n"$SCRIPT
fi
fi
done
if [ ${#FAILEDTESTS} -ge 1 ]
then
osascript -e 'display notification "'"$FAILEDTESTS"'" with title "R Test failed"'
FAILEDTESTS=""
fi
}
while $runX; do
fswatch src/main/*.R src/test/*.R | runTests
done