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 el tiempo de ejecución. Me gustaría agregar pruebas de integración para verificar la configuración del equinoccio.Prácticas recomendadas para pruebas de integración de funciones de Eclipse
En particular, quiero verificar que
- los componentes de servicio se unen juntos como espera
- los paquetes se activan
-
los plugins compartir información como se esperaba(ver Editar 2)
Además, quiero que esta prueba de integración sea parte de mi cont proceso de integración inusual utilizando una construcción sin cabeza Eclipse PDE (como se describe here y here).
Mi pregunta es: Me puede recomendar o no un marco, herramientas o prácticas que faciliten este tipo de pruebas de integración dentro de las limitaciones que he identificado?
he encontrado dos cables hasta el momento:
- 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 plugin 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.
Edit 2: Hasta ahora, todo lo que he visto parece confirmar la afirmación de Uri (ver a continuación) que las características de Eclipse multi-plugin no están probadas de integración a nivel de producto/función. 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 todavía):
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 corriendo mi código con una configuración de lanzamiento de Eclipse Plug-in de prueba, el lanzamiento de 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é Equinox DS no hace su magia?
@Yossi Dahan: Después de esta pregunta, has encontrado una manera de poner en práctica estas 'pruebas de integración' en OSGi/Equinox? Estamos enfrentando la misma pregunta en este momento – maasg