Blog

Schnelle FitNesse-Rundreisen während der Entwicklung

Arnout Engelen

Arnout Engelen

Aktualisiert Oktober 22, 2025
3 Minuten

FitNesse ist ein Framework für Akzeptanztests. Es ermöglicht Geschäftsanwendern, Testern und Entwicklern die Zusammenarbeit an ausführbaren Spezifikationen (z.B. im BDD-Stil und/oder bei der Implementierung von Specification by Example) und erlaubt das Testen sowohl des Back-Ends als auch des Front-Ends. Abgesehen von der teilweisen Automatisierung von Akzeptanztests und als Hilfsmittel für den Aufbau eines gemeinsamen Verständnisses zwischen Entwicklern und Geschäftsanwendern dient eine Auswahl der Tests aus einer FitNesse-Testsuite oft auch als Regressionstestsuite. Im Gegensatz zu Unit-Tests sollten FitNesse-Tests in der Regel fokussiert sein, aber dennoch eine Funktion in einer "End-to-End"-Weise testen. Es ist nicht ungewöhnlich, dass ein FitNesse-Test z.B. Mocked-Versionen von externen Systemen startet, z.B. einen Spring-Kontext und eine Verbindung zu einer echten Testdatenbank statt einer In-Memory-Datenbank herstellt.

FitNesse während der Entwicklung ausführen

Der Nachteil von End-to-End-Tests besteht darin, dass die Ausführung eines einzelnen Tests lokal relativ langsam wird, wenn Sie diesen ganzen Kontext einrichten. Dies ist einer der Gründe, warum Sie beim Schreiben von Tests die Testpyramide im Auge behalten und Tests auf der niedrigstmöglichen Ebene schreiben sollten (allerdings nicht auf einer niedrigeren). Dennoch können FitNesse-Tests, wenn sie richtig eingesetzt werden, einen enormen Nutzen bieten. Glücklicherweise machen es die Versionen von FitNesse seit dem 06.01.2014 relativ einfach, diese Umlaufzeit erheblich zu reduzieren.

Ein wenig Hintergrund

Die meisten modernen FitNesse-Tests werden mit dem SLIM-Testsystem geschrieben. Bei der Ausführung eines Tests wird ein separater 'Service'-Prozess gestartet, um den zu testenden Code ('fixtures' und 'code-under-test') tatsächlich auszuführen. Dies hat einige Vorteile: Der Klassenpfad des Serviceprozesses kann relativ sauber gehalten werden - Sie können sogar einen Serviceprozess verwenden, der in einer völlig anderen Sprache wie .Net oder Ruby geschrieben wurde, solange er das SLIM-Protokoll implementiert. Im üblichen Fall der Verwendung des Java-SLIM-Service bedeutet dies jedoch, dass Sie eine JVM aufsetzen, Ihre Klassen in den Classloader laden und möglicherweise zusätzliche Aufgaben wie die Initialisierung eines Teils Ihres Backends und der Mocking-Services durchführen müssen. Das kann eine Weile dauern und verlangsamt Ihre Entwicklung, was die Arbeit mit FitNesse weniger angenehm macht.

So beschleunigen Sie Ihre FitNesse-Reisezeiten

Eine Möglichkeit, die Testlaufzeiten enorm zu beschleunigen, besteht darin, den SlimService manuell zu starten und laufen zu lassen, anstatt den gesamten Kontext jedes Mal zu initialisieren, wenn Sie einen Test ausführen. Wenn Sie dies von Ihrer IDE aus tun, können Sie die Vorteile des selektiven Nachladens aktualisierter Klassen nutzen und einfach Haltepunkte setzen. Um FitNesse auf diese Weise lokal zu verwenden, legen Sie das FitNesse non-standalone jar auf Ihren Klassenpfad und starten Sie die main-Methode von fitnesse.slim.SlimService mit Parametern wie '-d 8090': '-d' soll verhindern, dass der SlimService nach dem Abbruch des ersten Tests heruntergefahren wird, '8090' gibt die Portnummer an, auf der gelauscht werden soll. Beispiel: java -cp yourclasspath fitnesse.slim.SlimService -d 8090 Wenn Sie nun die FitNesse Web-UI starten, geben Sie mit 'slim.port' den Port an, zu dem eine Verbindung hergestellt werden soll, und setzen Sie 'slim.pool.size' auf '1'. FitNesse wird sich dann mit dem bereits laufenden SLIM-Dienst verbinden, anstatt jedes Mal einen neuen Prozess zu starten. Beispiel: java -Dslim.port=8090 -Dslim.pool.size=1 -jar fitnesse-standalone.jar -p 8000 -e 0 Wir haben festgestellt, dass sich die Zeit, die wir für die Wiederholung eines unserer Tests benötigen, von typischerweise ~15 Sekunden auf etwa 2-3 Sekunden verkürzt hat. Das ist nicht nur eine Produktivitätsverbesserung, sondern vor allem macht es viel angenehmer, FitNesse-Tests dort einzusetzen, wo sie sinnvoll sind.

Verfasst von

Arnout Engelen

Contact

Let’s discuss how we can support your journey.