Me han pedido que haga un pequeño proyecto paralelo para suministrar una aplicación simple a uno de nuestros clientes. Normalmente estaría trabajando en el código de fondo donde tengo todas mis necesidades de prueba resueltas, y todavía no he tenido el dudoso placer de escribir pruebas para la GUI, por lo que no me queda claro cómo debo configurar el código de prueba y las herramientas para un EXE.
Mi primer instinto fue simplemente incluir las pruebas con el código de la aplicación, sin embargo, eso requeriría el suministro de una serie de dependencias específicas de la prueba, que me han indicado que no envíe específicamente al cliente. Tampoco puedo sacar dinero para una herramienta de prueba especialmente diseñada, así que necesito usar las herramientas que tengo a mano ( StoryQ , RhinoMocks y NUnit), que realmente debería ser más que suficiente para probar el comportamiento de una aplicación GUI simple. Así que, hasta donde puedo ver, esto me deja tratando de lograr un buen equilibrio entre mantener el diseño realmente simple o ingeniar excesivamente a propósito por el bien de las pruebas. Parece que estoy construyendo la aplicación con la lógica de negocios en una biblioteca separada y probando contra la biblioteca como lo haría normalmente, o buscando algún otro mecanismo que me permita acceder al ejecutable sin romper módulos adicionales que el diseño de la aplicación no realmente necesito.
Editar:
Tenga en cuenta que esta pregunta trata sobre cómo estructurar la relación entre NUnit y mi ejecutable, en lugar de una DLL, y no sobre cómo separar la presentación y la lógica empresarial.
/Editar
Entonces mi pregunta es:
- ¿Existe un método específico / recomendado para configurar una aplicación GUI simple con pruebas unitarias que me permita verificar adecuadamente el estado y el comportamiento, utilizando las herramientas que tengo a mano y sin recurrir a una ingeniería excesiva?
- ¿Me he perdido algo fundamental sobre la forma en que se debe invocar / configurar NUnit al probar un EXE (en lugar de una DLL)?
- ¿Me puede proporcionar o señalar en la dirección de ejemplos de cómo lograr todo esto?
Me doy cuenta de que puede haber más de una forma de hacer esto, así que estoy buscando pautas de implementación específicas basadas en su experiencia.