Domanda

Attualmente sto lavorando su un nuovo sistema di controllo della versione come parte di un progetto dell'ultimo anno all'Università.L’idea è di renderlo altamente adattabile e collegabile.

Utilizziamo il framework OSGi (implementazione Equinox) per gestire i nostri plug-in.Il mio problema è che non riesco a trovare un metodo semplice e facile da usare per testare i bundle OSGi.

Attualmente devo creare il bundle utilizzando Maven e quindi eseguire un test cablaggio.Sto cercando qualcosa come il test runner JUnit per Eclipse, poiché mi farà risparmiare un sacco di tempo.

Esiste un modo semplice e veloce per testare i bundle OSGi?

MODIFICARE:Non ho bisogno di qualcosa per testare i plug-in Eclipse o i componenti della GUI, solo i bundle OSGi.

EDIT2:Esiste qualche framework che supporta JUnit4?

È stato utile?

Soluzione

Spring Dynamic Modules ha un eccellente supporto per testare i bundle OSGi.

Altri suggerimenti

Più recentemente, dovresti dare un'occhiata a Pax Exam:http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

Questo è lo sforzo attuale di OPS4J relativo ai test.

Esiste un framework di test OSGi open source dedicato su OPS4J (ops4j.org) chiamato Drone della Pace.

Potresti dare un'occhiata a Pax Drone ([http://wiki.ops4j.org/confluence/x/KABo]) che ti consente di utilizzare tutte le versioni Felix nonché Equinox e Knopflerfish nei tuoi test.

Saluti, Toni

Ecco alcuni strumenti non ancora menzionati:

  • sto usando Tycho, che è uno strumento per utilizzare Maven per creare plug-in Eclipse.Se crei test all'interno dei propri plug-in o frammenti di plug-in, Tycho può eseguire ogni serie di test all'interno della propria istanza OSGi, con tutte le dipendenze richieste. Introduzione E ulteriori informazioni.Questo funziona abbastanza bene per me.

  • jUnit4OSGI sembra semplice.Crei sottoclassi di OSGiTestCase e ottieni metodi come getServiceReference(), eccetera.

  • Generatore di plugin, un sistema di compilazione headless per bundle OSGi/plug-in Eclipse, ha un framework di test chiamato Suite di test automatico.Esegue i test nel contesto dell'ambiente OSGi, dopo la fase di creazione.Ma non sembra essere stato mantenuto per diversi anni.Penso che molti progetti Eclipse stiano migrando da Pluginbuilder a Tycho.

  • Un'altra opzione è avviare un'istanza di un contenitore OSGi entro il tuo test unitario, che esegui direttamente, come spiegato Qui.

  • Ecco qualcuno che ha scritto un piccolo raccoglitore di test in bundle, che cerca i test JUnit (3) e li esegue.

Eclipse ha un tipo di configurazione di lancio per l'esecuzione di test JUnit nel contesto di un Eclipse (ad es.applicazione OSGi):

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

Se hai bisogno di testare i componenti della GUI, ho trovato SWTBot porta a termine il lavoro.

Trattato è un framework di contratto (test) piuttosto accademico ma con alcune idee carine.Ci sono documenti pubblicati su di esso e le persone che attualmente lavorano per migliorarlo.

IL Ambiente di esecuzione dei test ProSyst è un utile strumento di test per i bundle OSGi.Supporta anche i test JUnit come uno dei possibili modelli di test.

Per i test unitari utilizzare il framework EasyMock o creare le proprie implementazioni delle interfacce richieste per i test.

Penso che abbiamo riscontrato lo stesso problema e abbiamo creato la nostra soluzione.Ci sono diverse parti della soluzione:

  • Un junit4runner che cattura tutti i servizi OSGi per cui è definita una proprietà speciale.Gestisce questi servizi catturati con il motore JUnit4.Le annotazioni JUnit dovrebbero essere inserite nelle interfacce implementate dai servizi.
  • Un plugin Maven che avvia un framework OSGi (è possibile creare un framework personalizzato come dipendenza Maven) ed esegue gli unit test all'interno del ciclo di vita Maven del test di integrazione.
  • Un bundle OSGi del dispositivo di distribuzione.Se questo viene rilasciato nel contenitore OSGi, verrà aperta una semplice finestra sempre in primo piano in cui è possibile trascinare le cartelle del progetto (da Total Commander o da Eclipse).Questo ridistribuirà quindi quel pacchetto.

Con gli strumenti puoi eseguire TDD e far sì che i test scritti vengano sempre eseguiti anche durante la fase di integrazione di Maven.Si consiglia di utilizzare eclipse con m2e e maven-bundle-plugin poiché in questo caso target/classes/META-INF/MANIFEST.MF viene rigenerato non appena si salva una classe nell'origine in modo da poter trascinare e rilasciare il progetto alla finestra di distribuzione.I bundle OSGi che sviluppi non devono avere alcuna caratteristica speciale (come essere un plugin Eclipse o qualcosa del genere).

L'intera soluzione è OpenSource.Puoi trovare un tutorial su http://cookbook.everit.org

Negli ultimi due anni Tycho - un nuovo sistema di build basato su Maven per OSGi - è diventato piuttosto popolare tra la Eclipse Foundation.Questo framework include anche un metodo per utilizzare Maven Surefire per testare i bundle OSGi in banchi di prova separati...

Che ne dici di bnd-testing-maven-plugin?

Permette di eseguire JUnit all'interno di un contenitore in esecuzione come Felix o Equinox.Se hai utilizzato BNDTools per Eclipse, questo è molto simile ma semplicemente esperto senza eclissi e senza interfaccia utente.

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

guarda anche l'archetipo Effectiveosgi per Maven.Questo ti darà un buon punto di partenza per costruire il tuo progetto o semplicemente aggiungere test.

https://github.com/effectosgi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top