2009-10-16 18 views
13

Estoy buscando para probar la unidad de código SWT y Swing para un proyecto en el que estoy trabajando y las pruebas funcionan bien siempre y cuando las ejecute desde eclipse.La forma más fácil de probar unidades SWT y aplicaciones Swing en un entorno sin cabeza?

Tan pronto como los ejecuto en mi entorno hudson falla, ya que Hudson ejecuta las pruebas en modo sin cabeza.

¿Cuál es la mejor manera de hacerlo? Las soluciones de código abierto solo por favor (ya que el proyecto es de código abierto).

Respuesta

24

Puede ejecutar Xvfb (X framebuffer virtual, un servidor X11 que realiza todas las operaciones gráficas en la memoria) y esto funciona bien.

Pero hay otra solución con el complemento de Hudson para Xvnc. Basta con instalar el plugin y comprobar la casilla de verificación en la pantalla de configuración de la tarea:

alt text http://www.justinedelson.com/blog/wp-content/uploads/xvnc_box.jpg

Hudson continuación, se iniciará automáticamente una sesión Xvnc y establecer la variable de entorno DISPLAY en el valor adecuado a continuación, apague la sesión cuando el la construcción está completa. Una ventaja que tiene sobre el método Xvfb es que si tiene varios proyectos Swing/SWT construidos simultáneamente, cada compilación tiene su propia sesión X. Esto puede no ser un problema en absoluto, pero parece una buena idea.

Antes de usar este complemento, obviamente debe tener instalado Xvnc. Lo que es menos obvio (aunque sensato) es que también debe establecer una contraseña. Para ello, ejecute:

$ vncpassword 

Esto tiene que hacerse como el mismo usuario que Hudson ejecuta.

+2

Si esto funciona, este es el más bonito truco que lo he visto en años! –

+0

+1 funciona para mí :-) –

0

No sé sobre SWT, pero con Swing no puede. Cualquier instanciación de una ventana (JFrame, JDialog, etc.), incluso si nunca se configura como visible, explotará en el modo sin cabeza (en JDK 5). Lo que hicimos no se ejecutó en modo sin cabeza e instalamos Xvfb para proporcionar la ventana sin tener realmente instalado un sistema de ventanas real.

2

Uso de Swing Tiendo a organizar cosas para que el árbol de componentes se pueda crear sin una ventana en la parte superior. Hacer esto le permite simplemente crear un JPanel en una prueba de unidad y usarlo como su componente de nivel superior. Hay ciertas cosas que no puede probar, como el enfoque y cualquier lógica involucrada en la creación del Marco para el funcionamiento normal, pero la gran mayoría puede ser probada.

Es posible que desee ver en la biblioteca FEST para hacer la vida más fácil si vas sin cabeza o no, se ve muy bien: http://fest.easytesting.org/swing/wiki/pmwiki.php

Cuestiones relacionadas