2012-10-08 8 views
7

Al ejecutar la prueba JUnit con tycho-surefire-plugin, tycho se divide en equinoccio. En casos excepcionales, es posible que algunos paquetes en el tiempo de ejecución de la prueba OSGi no se puedan resolver/iniciar (por ejemplo, el paquete utiliza conflictos). Si se lee el registro de depuración (opción CLI experto -X), se encuentra algo así como¿Cómo analizar los problemas OSGi de bajo nivel durante la ejecución de la prueba tycho?

!ENTRY org.eclipse.osgi 2 0 2012-10-08 16:41:31.635 
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists: 
!SUBENTRY 1 org.eclipse.osgi 2 0 2012-10-08 16:41:31.635 
An error has occurred. See the log file 
C:\mytestproject.tests\target\work\configuration\1349705136008.log. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12:03.181s 
[INFO] Finished at: Mon Oct 08 16:17:16 CEST 2012 
[INFO] Final Memory: 20M/309M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-surefire-plugin:0.15.0:test (default-test) on project mytestproject.tests: An unexpected error occured (return c 
ode 13). See log for details. -> [Help 1] 

El registro de la consola de Eclipse no proporciona suficiente información en caso de paquete utiliza conflictos.

¿Cómo puedo analizar los paquetes en el tiempo de ejecución de la prueba OSGi bifurcado por tycho?

Respuesta

7

inicie las pruebas en modo de depuración remota (simplemente especifique -DdebugPort=8000 en la CLI) e inicie la consola OSGi en un puerto local, p. 1234:

 <plugin> 
      <groupId>org.eclipse.tycho</groupId> 
      <artifactId>tycho-surefire-plugin</artifactId> 
      <version>${tycho-version}</version> 
      <configuration> 
       <systemProperties> 
        <osgi.console>1234</osgi.console> 
       </systemProperties> 
      </configuration> 
     </plugin> 

Establecer un punto de interrupción en una de sus clases de prueba o en org/eclipse/Tycho/segura/osgibooter/OsgiSurefireBooter si las pruebas no son ni siquiera comenzaron. Entonces,

telnet localhost 1234 

y puede utilizar los comandos de la consola OSGi habituales, como ss, diag, bundle etc., para analizar el problema "in vivo".

+0

Tuve que agregar una propiedad del sistema adicional: true. Con eso funcionó. Gracias. –

0

Alternativamente puede ejecutar con -consolelog o establecer la propiedad eclipse.consoleLog en la propiedad true. Si está ejecutando con Tycho, puede usar <argLine>-Declipse.consoleLog=true</argLine>.

Cuestiones relacionadas