2012-05-09 13 views
14

Estoy tratando de poner a prueba una aplicación de interfaz gráfica de usuario y no estoy muy seguro de cómo hacerlo. Primero tengo una aplicación donde se encuentran todas las funciones de gui y ayudante. También tengo dos bibliotecas externas que he creado que usa esta aplicación. Las librerías solo hacen cosas pequeñas y me gustaría probar estas partes cuando QtMock esté funcionando (actualmente no es compatible con qt 4.8 por algún motivo).Pruebas de Do Gui en Qt

Me gustaría poner a prueba la aplicación principal sin tener que cambiar demasiado el código. Eché un vistazo a QtTestLib y me pareció muy básico y como si tuvieras que integrar ese código con el código principal, que no quiero. Realmente me gustaría seguir las pruebas fuera de la aplicación y me preguntaba cómo hacer esto. ¿No estoy seguro de si debería exportar mi aplicación enitre gui como una lib externa que podría importar en mi prueba?

¿Cómo se suele hacer esto para realmente poner a prueba todo el asunto. No tengo idea de cómo y dónde debería hacer el código de prueba y agradecería cualquier ayuda.

+5

¿Has probado squish? (http://www.froglogic.com/squish/gui-testing/) – Kunal

+0

aún no, pero lo eché un vistazo. Realmente me gustaría hacer esto por código, pero no tengo idea de cómo – chikuba

+0

ahh, no sé cómo hacerlo por código, pero lo usamos una vez en nuestro proyecto. permite escribir algunos guiones para la prueba automática de GUI. – Kunal

Respuesta

6

En mi experiencia, cualquier kit de herramientas de prueba que utilice va a trabajar en sí mismo en su código de manera sutil, o nunca llegar a la profundidad que necesita (o ambas cosas).

Es posible escribir código de prueba personalizado y mantener el código limpio para la aplicación que se está probando. Lo hice en una gran aplicación gui de Windows C++ que necesitaba para autenticar. La idea básica es crear un nuevo proyecto, hacer referencia a todo el código de su proyecto base y escribir un nuevo conjunto de clases que se derivan de las clases base y que contienen su código de prueba.

En mi caso, creé un nuevo proyecto de Visual Studio, pero puede hacer lo mismo con un nuevo proyecto de Qt. Las clases base pueden tener que ser refactorizadas para exponer las funciones que se probarán, por supuesto. Las clases de prueba llaman a las funciones de la clase base según sea necesario; puede crear una guía de prueba completa si lo desea.

Como un ejemplo muy simple, si este es su proyecto ...

class MyView : public QMainWindow {} 
class MyController {} 
class MyModel {} 

... crear un nuevo proyecto, tire en su código base, y añadir los siguientes:

class TestView  : public MyView {} 
class TestController : public MyController {} 
class TestModel  : public MyModel {} 

Al final, después de un poco de trabajo, el código de prueba cero estaba en mis clases base, y todavía podía conectar y disparar todo tipo de autotestas repetitivas en un buen gui de prueba.

No estoy diciendo que esta sea una tarea fácil o trivial. Solo te animo a que se pueda hacer. :-)

EDITAR: Esto no es una crítica de las pruebas de unidades integradas, lo cual es genial si puede obtenerlo desde el inicio de su proyecto. Pero esta era una gran aplicación heredada y era un requisito difícil no inyectar código de prueba en el código base.

Cuestiones relacionadas