Si ya tengo una prueba de integración para mi programa, y todos pasaron, tengo la sensación de que funcionará. Entonces, ¿cuáles son las razones para escribir / agregar pruebas unitarias? Como de todos modos ya tengo que escribir pruebas de integración, me gustaría escribir solo pruebas unitarias para partes que no están cubiertas por las pruebas de integración.
Lo que sé, el beneficio de la prueba unitaria sobre la prueba de integración son
- Pequeño y, por lo tanto, rápido de ejecutar (pero agregar una nueva unidad para probar algo ya está probado por la prueba de integración significa que mi traje de prueba total se hace más grande y más largo para ejecutarse)
- Localice el error más fácilmente porque solo prueba una cosa (pero puedo comenzar a escribir la prueba unitaria para verificar cada parte individual cuando falla mi prueba de integración)
- Encuentra un error que puede no quedar atrapado en la prueba de integración. por ejemplo, enmascarar / compensar errores. (pero si mi integración prueba todos los pases, lo que significa que mi programa funcionará incluso si existe algún error oculto. Por lo tanto, encontrar / corregir estos errores no son realmente de alta prioridad a menos que comiencen a romper futuras pruebas de integración o causen problemas de rendimiento)
Y siempre queremos escribir menos código, pero las pruebas de unidades de escritura necesitan mucho más código (principalmente objetos simulados de configuración). La diferencia entre algunas de mis pruebas unitarias y las pruebas de integración es que en las pruebas unitarias, uso un objeto simulado, y en las pruebas de integración, uso un objeto real. Que tienen mucha duplicación y no me gusta el código duplicado, incluso en las pruebas porque esto agrega gastos generales para cambiar el comportamiento del código (la herramienta de refactorización no puede hacer todo el trabajo todo el tiempo).