Question

Je travaille actuellement sur un nouveau système de contrôle de version dans le cadre d'un projet de dernière année à l'université. L’idée est de le rendre hautement adaptable et connectable.

Nous utilisons le framework OSGi (implémentation d'Equinox) pour gérer nos plug-ins. Mon problème est que je ne peux pas trouver un simple & amp; méthode facile à utiliser pour tester les ensembles OSGi.

Actuellement, je dois construire le bundle avec Maven, puis exécuter un test. Je recherche quelque chose comme le testeur JUnit pour Eclipse, car cela me fera gagner beaucoup de temps.

Existe-t-il un moyen simple et rapide de tester les offres OSGi?

EDIT: Je n'ai pas besoin de quelque chose pour tester les plug-ins Eclipse ou les composants d'interface graphique, mais uniquement les bundles OSGi.

EDIT2: Existe-t-il un framework prenant en charge JUnit4?

Était-ce utile?

La solution

Spring Dynamic Modules offre un excellent support pour tester des ensembles OSGi .

Autres conseils

Plus récemment, vous devriez jeter un coup d'œil à l'examen Pax: http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

Il s’agit des efforts en cours à OPS4J en matière de test.

Il existe un framework de test OSGi open source dédié sur OPS4J (ops4j.org) appelé Pax Drone .

Vous voudrez peut-être jeter un coup d'œil à Pax Drone ([ http: //wiki.ops4j .org / confluence / x / KABo] ) qui vous permet d’utiliser toutes les versions de Felix ainsi que l’équinoxe et le knopflerfish dans vos tests.

Salut, Toni

Voici quelques outils non encore mentionnés:

  • J'utilise Tycho , un outil permettant d'utiliser Maven pour créer Eclipse. plugins. Si vous créez des tests dans leurs propres plug-ins ou fragments de plug-in, Tycho peut exécuter chaque ensemble de tests dans sa propre instance OSGi, avec toutes ses dépendances requises. Intro et informations complémentaires . Cela fonctionne assez bien pour moi.

  • jUnit4OSGI semble simple. Vous créez des sous-classes de OSGiTestCase et vous obtenez des méthodes telles que getServiceReference () , etc.

  • Pluginbuilder , un système de construction sans tête pour les bundles OSGi / plug-ins Eclipse, a un framework d'exécution de tests appelé Autotestsuite . Il exécute les tests dans le contexte de l'environnement OSGi, après l'étape de génération. Mais, il ne semble pas avoir été maintenu pendant plusieurs années. Je pense que de nombreux projets Eclipse migrent de Pluginbuilder vers Tycho.

  • Une autre option consiste à démarrer une instance de un conteneur OSGi dans votre test unitaire , que vous exécutez directement, comme expliqué ici .

  • Voici quelqu'un qui a écrit un petit collecteur de tests d'ensembles , qui recherche et exécute des tests JUnit (3).

Eclipse a un type de configuration de lancement pour l'exécution de tests JUnit dans le contexte d'une application Eclipse (c'est-à-dire OSGi):

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm

Si vous devez tester les composants de l'interface graphique, SWTBot effectue le travail correctement.

Le

traité est un cadre contractuel (de test) assez académique mais qui présente quelques avantages des idées. Il existe des articles qui y sont publiés et les personnes qui travaillent actuellement à l’améliorer.

Le Environnement d'exécution de tests ProSyst est un outil de test utile pour les bundles OSGi. Il prend également en charge les tests JUnit en tant que modèle de test possible.

Pour les tests unitaires, utilisez le framework EasyMock ou créez vos propres implémentations des interfaces requises pour les tests.

Je pense que nous avons rencontré le même problème et que nous avons créé notre propre solution. Il existe différentes parties de la solution:

  • Junit4runner qui intercepte tous les services OSGi pour lesquels une propriété spéciale est définie. Il exécute ces services capturés avec le moteur JUnit4. Les annotations JUnit doivent être placées dans les interfaces implémentées par les services.
  • Un plug-in maven qui démarre un framework OSGi (un framework personnalisé peut être créé en tant que dépendance maven) et exécute les tests unitaires dans le cycle de vie maven de test d'intégration.
  • Un bundle OSGi pour les utilisateurs. Si cela est déposé dans votre conteneur OSGi, une simple fenêtre toujours visible s’ouvre pour vous permettre de déposer vos dossiers de projet (à partir de total commander ou d’éclipse). Cela redéployera alors ce paquet.

Avec les outils, vous pouvez utiliser TDD et faire en sorte que les tests écrits soient toujours exécutés au cours de la phase d’intégration maven. Il est recommandé d’utiliser eclipse avec m2e et maven-bundle-plugin car, dans ce cas, target / classes / META-INF / MANIFEST.MF est régénéré dès que vous enregistrez une classe dans votre source afin que vous puissiez faire glisser le projet et le déposer. à la fenêtre du déployeur. Les bundles OSGi que vous développez ne doivent pas nécessairement comporter de fonctionnalités spéciales (comme un plugin eclipse ou autre).

La solution entière est OpenSource. Vous pouvez trouver un didacticiel sur http://cookbook.everit.org

Au cours des dernières années, le Tycho , un nouveau système de construction basé sur Maven pour OSGi, est devenu plutôt populaire. parmi la Fondation Eclipse. Ce cadre inclut également une méthode d’utilisation de Maven Surefire pour tester les ensembles OSGi sur des bancs d’essai distincts ...

Qu'en est-il de bnd-testing-maven-plugin?

Il permet d’exécuter JUnit dans un conteneur en cours d’exécution tel que Felix ou Equinox. Si vous avez utilisé BNDTools pour eclipse, cela est très similaire, mais il est juste maven avec outpout eclipse et sans interface utilisateur.

https://github.com/bndtools / bnd / tree / master / maven / bnd-testing-maven-plugin

examinez également l’archétype effectiveosgi de Maven. Cela vous donnera un bon point de départ pour construire votre projet ou simplement pour ajouter des tests.

https://github.com/effectiveosgi

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top