Pregunta

Sí, leí las 'Preguntas relacionadas' en el cuadro de arriba después de escribir esto =). Todavía no me ayudaron tanto como me gustaría, ya que entiendo cuál es la diferencia entre los dos, simplemente no estoy seguro de si lo necesito en mi caso específico.

Así que tengo una aplicación completamente probada (simple y pequeña). Tengo una clase 'Job' con un único método público Run () + ctors que toma una hoja de cálculo de Excel como parámetro, extrae los datos, verifica la base de datos para ver si ya tenemos esos datos y, si no, hace una solicitud para un proveedor externo, toma esa respuesta, la coloca en la base de datos y luego completa el trabajo (actualización de db nuevamente)

Tengo IConnection para hablar con el proveedor, IParser para analizar archivos de Excel / vendedor, IDataAccess para hacer todo el acceso a la base de datos. Mi clase de trabajo es magra & amp; significa y no hace mucha lógica, aunque en realidad está haciendo todo la lógica, en realidad solo está 'encadenando' datos a través de los objetos compuestos ...

Por lo tanto, todos los objetos compuestos se prueban por unidad ellos mismos, incluido el DAL, e incluso mi método Run () en la clase Job se prueba por unidad completamente usando simulacros para todas las rutas de código posibles.

Entonces, ¿necesito hacer algún tipo de prueba de integración en este momento, aparte de ejecutar la aplicación para ver si funciona? ¿Mi (s) prueba (s) del método Run () con simulacros se consideran mis pruebas de integración? ¿O debería mi prueba de integración usar instancias reales en lugar de simulacros, y luego afirmar los valores de la base de datos al final, según la entrada de hoja de cálculo Excel conocida? ¡Pero eso es lo que todas las pruebas de mi unidad ya están haciendo (solo en lugares separados, y la prueba de ejecución simulada se asegura de que esos lugares se 'conecten')! Siguiendo la metodología DRY, simplemente no veo la necesidad de hacer una prueba de integración aquí ...

¿Me estoy perdiendo algo obvio chicos? Muchas gracias de nuevo ...

¿Fue útil?

Solución

Creo que lo más importante que te estás perdiendo es el comportamiento real de tus sistemas externos. Si bien las pruebas unitarias ciertamente pueden afirmar que los pasos individuales realizan la acción esperada, hacen poco para revelar los problemas de tiempo de ejecución que pueden surgir al acceder a sistemas externos. Sus sistemas externos también pueden contener datos que no conoce.

Entonces sí, creo que necesitas ambos. No necesariamente necesita ser igualmente detallado en ambas pruebas. A veces puedes dejar que la prueba de integración sea una prueba de humo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top