2009-02-11 7 views
10

Je développe une fonctionnalité Eclipse composée de plusieurs plug-ins Eclipse, en utilisant Equinox Declarative Services (DS) pour câbler les plugins au moment de l'exécution. Je voudrais ajouter des tests d'intégration pour vérifier la configuration de l'équinoxe.Meilleures pratiques pour les tests d'intégration de fonctionnalités Eclipse

En particulier, je veux vérifier que

  • les composants de service se lient ensemble comme prévu
  • les faisceaux sont activés
  • les plug-ins de partager des informations comme prévu (voir Edit 2)

En outre, je veux faire de ce test d'intégration une partie de mon cont processus d'intégration inactif utilisant une construction sans tête Eclipse PDE (comme décrit here et here).

Ma question est: Pouvez-vous recommander des cadres, des outils ou des pratiques qui faciliteront ce type de tests d'intégration dans les contraintes que j'ai identifiées?

que j'ai trouvé deux fils à ce jour:

  • Spring Dynamic Modules comprend un cadre pour les tests d'intégration OSGi. Cependant, je n'ai pas été en mesure d'exécuter un simple test Spring DM dans Eclipse. Il se plaint que "la plate-forme est déjà en cours d'exécution".
  • Pax Exam (anciennement Pax Drone) est un autre framework de test d'intégration OSGi.

Modifier: Pour clarifier, chaque plug-in a une composante de services OSGi configuré avec un fichier xml définition du composant. Une erreur dans l'un de ces fichiers de configuration ne casse aucune dépendance de plugin et peut facilement passer inaperçue jusqu'à l'exécution. Des tests d'intégration sont nécessaires pour détecter une telle défaillance. Jusqu'à présent, tout ce que j'ai vu semble confirmer l'affirmation d'Uri (voir ci-dessous) que les fonctionnalités Eclipse multi-plugin ne sont pas testées au niveau des fonctionnalités/produits. Je suis prêt à me passer de tests d'intégration complets si je peux au moins vérifier automatiquement que les composants du service se lient correctement.

Mon approche (ne fonctionne pas encore):

 

In a JUnit test do 
    For each bundle/plugin of interest 
     Get the osgi Bundle object with org.eclipse.core.runtime.Platform.getBundle() 
     Verify that the Bundle is active with Bundle.getState() 
     Verify that the Bundle is using the expected services with Bundle.getServicesInUse() 
     Verify that the Bundle has registered the expected services with Bundle.getRegisteredServices() 
 

Je suis en cours d'exécution avec mon code d'Eclipse configuration Plug-in lancement d'essai, le lancement de mon produit Eclipse comme le "programme à exécuter". Lorsque les tests sont exécutés, je peux vérifier que les groupes sont actifs mais que les composants de service ne sont pas activés et que les méthodes getServicesInUse et getRegisteredServices renvoient null. J'ai chargé une classe de chaque paquet au cas où il s'agissait d'un problème d'activation différée, mais cela n'a pas aidé. J'ai également vérifié que tous les composants du service sont des composants "immédiats", ils doivent donc être activés dès que leur bundle est activé. Pourquoi Equinox DS ne fait pas sa magie?

+0

@Yossi Dahan: Après cette question, avez-vous trouvé un moyen d'implémenter ces 'tests d'intégration' dans OSGi/Equinox? Nous sommes confrontés à la même question en ce moment – maasg

Répondre

2

Nous avons écrit notre propre cadre d'exécution peu de test basé sur une combinaison de méthodes à: a) rcp bundletestcollector (http://rcpquickstart.com/2008/06/12/running-unit-tests-for-rcp-and-osgi-applications/) Ceci est écrit par Pascal Rapidcault qui est l'un des principaux types de RCP. Il collecte les classes de test à partir des ensembles dans un environnement OSGi en cours d'exécution. B) le cadre de test de knopflerfish (http://knopflerfish.org/releases/2.1.1/knopflerfish_osgi_tests_2.1.1.zip) Enregistre les cas de test en tant que services pouvant être exécutés par un coureur de test. Il y a aussi une sortie XML, qui diffère malheureusement un peu du format XML ant junit. De cette façon, nous pouvons exécuter des tests d'intégration dans des groupes de tests séparés ainsi que des tests plus proches des tests unitaires classiques et vivre en fragments avec leurs ensembles testés (voir http://rcpquickstart.com/2007/06/20/unit-testing-plug-ins-with-fragments/).

Questions connexes