Effiziente Implementierung von Integrationstests

OSGi-Tests mal Groovy


Um bei Softwareprojekten den Anforderungen stets gerecht werden zu können, ist es wichtig, eine permanente Qualitätssicherung mithilfe automatisierter Tests durchzuführen. Die Open Services Gateway Initiative (OSGi) ist eine Softwareplattform, die ein dynamisches Komponentenmodell spezifiziert. In klassischen OSGi-Projekten werden häufig Unit Tests in Java implementiert. Das Schreiben dieser Tests kann sich jedoch als zeitaufwändig und umständlich herausstellen. Die Syntax von Java ist mittlerweile leicht angestaubt und wichtige Sprachfeatures wie Lambda-Ausdrücke kommen erst mit der nächsten Java-Version [1].

Glücklicherweise ist die JVM in den vergangenen Jahren um weitere Sprachen erweitert worden. Dies bietet dem Entwickler die Möglichkeit, für verschiedene Aspekte eines Projekts unterschiedliche Programmiersprachen zu verwenden. Insbesondere die Skriptsprache Groovy eignet sich gut für das Implementieren von OSGi-Tests. Mit Groovy lassen sich vor allem Integrationstests, die in der OSGi-Umgebung ausgeführt werden können, effizient und in einer modernen Syntax kompakt schreiben.

Dieser Artikel demonstriert, wie sich für ein beispielhaftes OSGi-Projekt Groovy-Tests implementieren und in einer Equinox-OSGi-Umgebung ausführen lassen. Die Tests lassen sich zudem mithilfe des Build-Werkzeugs Maven vollständig automatisiert ausführen.

OSGi

OSGi enthält eine Reihe von Spezifikationen, die ein dynamisches Komponenten- und Servicemodell für Java beschreiben [2]. Der zentrale Bestandteil des OSGi-Komponentenmodells sind die Bundles. Sie besitzen einen Lebenszyklus, der sich beispielsweise durch Starten, Stoppen, Installieren und Deinstallieren steuern lässt. Jedes einzelne Bundle gibt seine zu exportierenden Java-Pakete sowie die benötigten Abhängigkeiten in Form von Paketimporten an. Dies ist ein wesentlicher Vorteil, der ein einfaches Verbergen und Entkoppeln von API und Implementierung erlaubt und zudem klare Abhängigkeiten zwischen Bundles definiert. Innerhalb von Bundles können OSGi Services registriert werden, die von anderen Komponenten referenziert werden können. Je nach Version der Spezifikation werden bereits eine Reihe von Basisservices, wie der EventAdmin-Service, HTTP-Service, Declarative-Services, Conditional Permission Admin etc., bereitgestellt. Da OSGi häufig im Embedded-Umfeld zum Einsatz kommt, können Applikationen dort in Abhängigkeit der Hardware nur in älteren Java-Versionen implementiert werden.

Integrative OSGi-Tests

Bei Softwaretests...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang