Pregunta

Actualmente estoy trabajando en un nuevo sistema de control de versiones como parte de un proyecto de fin de 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 crear el paquete usando Maven y luego ejecutar un arnés de prueba.Estoy buscando algo como el ejecutor de pruebas JUnit para Eclipse, ya que me ahorrará mucho tiempo.

¿Existe una forma rápida y sencilla de probar paquetes OSGi?

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

EDITAR2:¿Existe algún marco que admita JUnit4?

¿Fue útil?

Solución

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

Otros consejos

Más recientemente, deberías echarle un vistazo a Pax Exam:http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

Este es el esfuerzo actual en OPS4J relacionado con las pruebas.

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

Quizás quieras echarle 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

Aquí hay algunas herramientas que aún no se mencionan:

  • Estoy usando tycho, que es una herramienta para usar Maven para crear complementos de Eclipse.Si crea pruebas dentro de sus propios complementos o fragmentos de complementos, Tycho puede ejecutar cada conjunto de pruebas dentro de su propia instancia OSGi, con todas sus dependencias requeridas. Introducción y informacion adicional.Esto me está funcionando bastante bien.

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

  • Generador de complementos, un sistema de compilación sin cabeza para paquetes OSGi/complementos de Eclipse, tiene un marco de ejecución de pruebas llamado Conjunto de pruebas automáticas.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 tu prueba unitaria, que ejecuta directamente, como se explica aquí.

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

Eclipse tiene un tipo de configuración de inicio para ejecutar pruebas JUnit en el contexto de un Eclipse (es decir,OSGi) aplicación:

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

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

Tratado es un marco de contrato (prueba) que es bastante académico pero tiene algunas buenas ideas.Hay artículos publicados al respecto y personas que actualmente trabajan para mejorarlo.

El Entorno de ejecución de pruebas ProSyst es una herramienta de prueba útil para paquetes OSGi.También admite pruebas JUnit como uno de los posibles modelos de prueba.

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

Creo que nos encontramos con el mismo problema y creamos 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 de Maven que inicia un marco OSGi (se puede crear un marco personalizado como dependencia de Maven) y ejecuta las pruebas unitarias dentro del ciclo de vida de Maven de prueba de integración.
  • Un paquete OSGi de implementación.Si esto se coloca en su contenedor OSGi, se abrirá una ventana simple siempre visible donde podrá colocar las carpetas de su proyecto (desde Total Commander o desde Eclipse).Esto luego volverá a implementar ese paquete.

Con las herramientas, puede realizar TDD y hacer que las pruebas escritas siempre se ejecuten también dentro de la fase de integración de Maven.Se recomienda usar eclipse con m2e y maven-bundle-plugin ya que en este caso target/classes/META-INF/MANIFEST.MF se regenera tan pronto como guarda 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í).

Toda la solución es OpenSource.Puedes encontrar un tutorial en http://cookbook.everit.org

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...

¿Qué tal bnd-testing-maven-plugin?

Permite ejecutar JUnit dentro de un contenedor en ejecución como Felix o Equinox.Si usó BNDTools para eclipse, esto es muy similar, pero simplemente experto sin eclipse y sin interfaz de usuario.

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

Mire también el arquetipo de Effectiveosgi para Maven.Esto le brindará un buen punto de partida para construir su proyecto o simplemente agregar pruebas.

https://github.com/efectivosgi

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top