swing junit swt headless

La forma más fácil de probar las aplicaciones SWT y Swing en un entorno sin cabeza?



junit headless (6)

Estaba seguro de haber publicado esto aquí antes, no estoy seguro de lo que le sucedió.

Cacio permite ejecutar la aplicación Swing sin cabeza.

http://rkennke.wordpress.com/2011/10/17/cacio-for-ui-testing/

Estoy buscando probar algunos SWT y código Swing para un proyecto en el que estoy trabajando y las pruebas funcionan bien siempre y cuando las ejecute desde eclipse.

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 hacer esto? Las soluciones de código abierto solo por favor (ya que el proyecto es de código abierto).


No sé nada sobre SWT, pero con Swing no puedes. 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 headless e instalamos Xvfb para proporcionar la ventana sin tener realmente instalado un sistema de ventanas real.



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. Simplemente instale el complemento y marque la casilla de verificación en la pantalla de configuración del trabajo:

texto alternativo http://www.justinedelson.com/blog/wp-content/uploads/xvnc_box.jpg

Hudson iniciará automáticamente una sesión de Xvnc y establecerá la variable de entorno DISPLAY en el valor apropiado y luego cerrará la sesión cuando se complete la compilación. 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. Usted hace esto ejecutando:

$ vncpassword

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



Usando 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 buscar en la biblioteca FEST para hacer la vida más fácil, ya sea que quede sin cabeza o no, se ve muy bien: http://fest.easytesting.org/swing/wiki/pmwiki.php