Pruebas unitarias de los métodos de "flujo de trabajo"

7

Actualmente estamos desarrollando una API pública para nuestra aplicación. Los métodos en esta API pública son en su mayoría una funcionalidad conjunta en diferentes esquinas del sistema. Un ejemplo sería: (los nombres han sido cambiados para proteger a los inocentes)

public String createAppUser(String app, String name, String email, byte[] pwd) { 
     Application appl = applicationModule.retrieve(app);
     User user = userModule.createUser(name,email);
     Digest digest = cryptoModule.createDigest(pwd);
     authenticationModule.authorize(user,appl,digest);
     accountingModule.createAccount(user,appl);
     return user.getId();
}

Cuando la unidad realiza una prueba de este tipo, la prueba de la unidad es solo una copia del mismo flujo de trabajo, con algo de ruido adicional para configurar simulacros, objetos y validar las interacciones. Aunque considero que la prueba unitaria de partes algorítmicas de la aplicación es esencial, en esta parte del 'flujo de trabajo', encuentro que la prueba unitaria es una repetición del flujo de trabajo en forma de pregunta. Siguiendo el principio DRY, se siente como una pérdida de tiempo. ¿Cuáles son las mejores prácticas en estos casos?

Dado que estos métodos son parte de una API pública, encontraría más valioso probarlos a través de un cliente y validar que los efectos del sistema han tenido lugar. Esto es más "prueba del sistema" o "prueba de integración" y está más allá del alcance de la prueba unitaria.

¿Cuál sería el mejor enfoque de prueba en este contexto?

    
pregunta maasg 13.10.2011 - 16:06

1 respuesta

7

Tienes razón: esto se incluye en la categoría 'prueba de integración'. Y con las pruebas de integración, tiendo a no burlarme de nada más que de recursos muy externos (como una página web o un archivo de red), ya que se supone que debes probar cómo los componentes reales interactúan entre sí.

En esos casos, simplemente afirme que se han cambiado los estados correctos de la aplicación y que la salida se ve bien. En este caso, ejecute el método y simplemente confirme que la tabla de usuarios se ha modificado, que están autorizados y que se le devuelve una ID.

    
respondido por el Pewpewarrows 13.10.2011 - 17:08

Lea otras preguntas en las etiquetas