studio reales proyectos para mentor introducción incluye herramientas fuente desarrollo código con colección avanzado aula aplicaciones eclipse osgi integration-testing eclipse-pde
http://knopflerfish.org/releases/2.1.1/knopflerfish_osgi_tests_2.1.1.zip

eclipse - para - introducción a android studio incluye proyectos reales y el código fuente pdf



Mejores prácticas para pruebas de integración de funciones de Eclipse (1)

Estoy desarrollando una característica de Eclipse que consta de varios plugins de Eclipse, utilizando Equinox Declarative Services (DS) para conectar los complementos entre sí en tiempo de ejecución. Me gustaría agregar pruebas de integración para verificar la configuración del equinoccio.

En particular, quiero verificar que

  • los componentes del servicio se unen como se esperaba
  • los paquetes están activados
  • los complementos comparten la información como se esperaba (ver Edición 2 )

Además, quiero que esta prueba de integración forme parte de mi proceso de integración continua utilizando una construcción sin cabeza Eclipse PDE (como se describe aquí y aquí ).

Mi pregunta es : ¿me pueden recomendar marcos, herramientas o prácticas que faciliten este tipo de pruebas de integración dentro de las limitaciones que he identificado?

He encontrado dos pistas hasta ahora:

  • Spring Dynamic Modules incluye un marco para las pruebas de integración OSGi. Sin embargo, no he podido obtener una prueba simple de Spring DM para ejecutar dentro de Eclipse. Se queja de que "la plataforma ya se está ejecutando".
  • Pax Exam (anteriormente Pax Drone) es otro marco de prueba de integración OSGi.

Editar : para aclarar, cada complemento tiene un componente de servicio OSGi configurado con un archivo xml de definición de componente. Un error en uno de estos archivos de configuración no romperá las dependencias de los complementos y podría pasar desapercibido hasta el tiempo de ejecución. La prueba de integración es necesaria para detectar dicha falla.

Edición 2 : Hasta ahora, todo lo que he visto parece confirmar la afirmación de Uri (ver a continuación) de que las características de Eclipse de multi-plugins no están probadas de integración en el nivel de la función / producto. Estoy dispuesto a pasar sin pruebas integrales de integración si puedo al menos verificar automáticamente que los componentes del servicio se unen correctamente.

Mi enfoque (no funciona aún):

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()

Estoy ejecutando mi código con una configuración de lanzamiento de la prueba del complemento Eclipse, lanzando mi producto Eclipse como el "Programa para ejecutar". Cuando se ejecutan las pruebas, puedo verificar que los paquetes estén activos, pero los componentes del servicio no se activan y los métodos getServicesInUse y getRegisteredServices devuelven nulo. Cargué una clase de cada paquete en caso de que se tratara de un problema de activación lenta, pero eso no ayudó. También verifiqué que todos los componentes del servicio son componentes "inmediatos", por lo que deben activarse tan pronto como se activen los paquetes. ¿Por qué no Equinox DS hace su magia?


Escribimos nuestro propio pequeño marco de ejecución de pruebas basado en una combinación de enfoques: a) rcp bundletestcollector ( http://rcpquickstart.com/2008/06/12/running-unit-tests-for-rcp-and-osgi-applications / ) Esto está escrito por Pascal Rapidcault, que es uno de los principales tipos de RCP. Recopila clases de prueba de paquetes en un entorno OSGi en ejecución.

b) el marco de prueba de knopflerfish ( http://knopflerfish.org/releases/2.1.1/knopflerfish_osgi_tests_2.1.1.zip ) Registra casos de prueba como servicios que pueden ser ejecutados por un corredor de prueba. También hay un resultado XML, que desafortunadamente difiere un poco del formato XML de junit ant.

De esta forma, podemos ejecutar pruebas de integración que vivan en paquetes de prueba separados, así como pruebas que estén más cerca de las pruebas unitarias clásicas y vivan en fragmentos de sus paquetes bajo prueba (ver http://rcpquickstart.com/2007/06/20/unit- testing-plug-ins-with-fragments / ).