java testing osgi

java - Pruebas OSGi



testing (11)

Spring Dynamic Modules tiene un excelente soporte para probar paquetes OSGi .

Actualmente, estoy trabajando en un nuevo sistema de control de versiones como parte de un proyecto de último año en la Universidad. La idea es hacerlo altamente adaptable y conectable.

Estamos utilizando el marco OSGi (implementación de Equinox) para administrar nuestros complementos. Mi problema es que no puedo encontrar un método simple y fácil de usar para probar paquetes OSGi.

Actualmente, tengo que construir el paquete usando Maven y luego ejecutar un arnés de prueba. Estoy buscando algo así como el corredor de prueba JUnit para Eclipse, ya que me ahorrará un montón de tiempo.

¿Existe una manera rápida y fácil de probar los paquetes OSGi?

EDITAR: No necesito algo para probar los complementos de Eclipse o la GUI, solo los paquetes de OSGi.

EDIT2: ¿Hay algún marco que admita JUnit4?




Si necesita probar los componentes de la GUI, he encontrado que SWTBot hace el trabajo.


Hay un marco de prueba OSGi de código abierto dedicado en OPS4J (ops4j.org) llamado Pax Drone .

Es posible que desee echar un vistazo a Pax Drone ([ http://wiki.ops4j.org/confluence/x/KABo] ) que le permite utilizar todas las versiones de Felix, así como Equinox y Knopflerfish en sus pruebas.

Saludos, Toni


El Tratado es un marco contractual (de prueba) que es bastante académico pero tiene algunas ideas agradables. Hay documentos que se publican en él y las personas que trabajan actualmente para mejorarlo.


Aquí hay algunas herramientas aún no mencionadas:

  • Estoy usando Tycho , que es una herramienta para usar Maven para crear plugins de Eclipse. Si crea pruebas dentro de sus propios complementos o fragmentos de plug-in, Tycho puede ejecutar cada conjunto de pruebas dentro de su propia instancia OSGi, con todas sus dependencias requeridas. Introducción y más información . Esto está funcionando bastante bien para mí.

  • jUnit4OSGI parece sencillo. Haces subclases de OSGiTestCase, y obtienes métodos como getServiceReference() , etc.

  • Pluginbuilder , un sistema de compilación sin cabeza para paquetes OSGi / plug-ins de Eclipse, tiene un marco de ejecución de prueba llamado Autotestsuite . Ejecuta las pruebas en el contexto del entorno OSGi, después del paso de compilación. Pero, parece que no se ha mantenido durante varios años. Creo que muchos proyectos de Eclipse están migrando de Pluginbuilder a Tycho.

  • Otra opción es iniciar una instancia de un contenedor OSGi dentro de su prueba de unidad , que ejecutará directamente, tal como se explica aquí .

  • Aquí hay alguien que ha escrito un pequeño recopilador de pruebas de paquete , que busca pruebas de JUnit (3) y las ejecuta.



Durante los últimos años, Tycho , un nuevo sistema de compilación basado en Maven para OSGi, se ha vuelto bastante popular entre la Fundación Eclipse. Este marco también incluye un método para usar Maven Surefire para probar paquetes OSGi en bancos de pruebas separados ...


Para las pruebas unitarias, use el marco EasyMock o cree sus propias implementaciones de las interfaces requeridas para las pruebas.


Creo que nos encontramos con el mismo problema e hicimos nuestra propia solución. Hay diferentes partes de la solución:

  • Un junit4runner que captura todos los servicios OSGi que tienen una propiedad especial definida. Ejecuta estos servicios capturados con el motor JUnit4. Las anotaciones de JUnit deben colocarse en las interfaces que implementan los servicios.
  • Un complemento maven que inicia un marco OSGi (se puede crear un marco personalizado como dependencia maven) y ejecuta las pruebas unitarias dentro del ciclo de vida de maven de prueba de integración.
  • Un paquete de despliegue OSGi. Si esto se deja caer en su contenedor OSGi, se abrirá una ventana simple siempre en la parte superior, donde puede soltar las carpetas de su proyecto (del comandante total o del eclipse). Esto luego volverá a desplegar ese paquete.

Con las herramientas puede hacer TDD y hacer que las pruebas escritas siempre se ejecuten dentro de la fase de integración de maven también. Se recomienda utilizar eclipse con m2e y maven-bundle-plugin ya que en este caso el target / classes / META-INF / MANIFEST.MF se regenera tan pronto como guarde una clase en su fuente para que pueda arrastrar el proyecto y soltarlo a la ventana del implementador. Los paquetes OSGi que desarrolle no tienen que tener ninguna característica especial (como ser un complemento de eclipse o algo así).

La solución completa es OpenSource. Puede encontrar un tutorial en http://cookbook.everit.org