¿Cómo prueba la unidad de aplicación y código de UI?


10

Me encanta escribir pruebas unitarias y estoy de acuerdo en que son una excelente manera de probar el código, evitar regresiones, etc. Sin embargo, me resulta incapaz de escribirlas, ya que la gran mayoría del código en el que trabajo día a día es aplicación código que muestra una interfaz de usuario para el usuario. ¿Hay una buena manera de probar el código de la aplicación? ¿Cuáles son las mejores prácticas aquí?

No busco una respuesta específica, como un marco, etc., sino, en general, ¿cómo aborda este problema?


¿Qué es el "código de aplicación que muestra la interfaz de usuario"? ¿Estás hablando de la C en MVC?
Martin Wickman

Estoy hablando de cualquier tipo de interfaz gráfica: JavaScript / HTML, C ++ con MFC, WinForms, WPF, etc ...
Justin Ethier

MVVM es fácil de prueba unitaria. Ver Patrón de comando
Amir Rezaei

@amir: ¿tiene alguna referencia o información adicional?
Justin Ethier

Respuestas:


8

Para probar la interfaz de usuario real, Selenium funciona bien.

Si desea pruebas unitarias reales, su estrategia es hacer retroceder la mayor cantidad de lógica posible desde la interfaz de usuario real, generalmente en un objeto ViewModel. Luego puede escribir pruebas unitarias contra el objeto ViewModel.

En otras palabras, coloque la menor lógica posible en la IU real, de modo que la prueba de la unidad pueda llevarse a cabo en otro lugar.


Ese es un buen diseño para SoC. No debería haber dominio / lógica de negocios en la interfaz de usuario. Mucha lógica del cliente: la interactividad / validación puede ir en la interfaz de usuario con JavaScript, que es comprobable por unidad.
StuperUser

1

He tenido éxito al probar mi aplicación con MSTest y probar mi Javascript con QUnit y recoger los resultados de esas pruebas con una sola prueba de Unidad MSTest que usa WatiN (me sugirieron Selenium , que también tiene la capacidad de grabar pruebas, pero Encontré WatiN mejor para la automatización limpia).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.