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 ya tengo que escribir pruebas de integración de todos modos, 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 ha sido probado por la prueba de integración significa que mi traje de prueba total se hace más grande y más largo para correr)
- Localice el error más fácilmente porque solo prueba una cosa (pero puedo comenzar a escribir una prueba unitaria para verificar cada parte individual cuando mi prueba de integración falló)
- Busque un error que no se pueda detectar en la prueba de integración. p.ej. Enmascaramiento / compensación de errores. (pero si mi integración prueba todas las pasadas, 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 unidad de escritura necesitan mucho más código (principalmente, configurar objetos simulados). 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, ni siquiera en las pruebas porque esto agrega una sobrecarga para cambiar el comportamiento del código (la herramienta refactor no puede funcionar todo el tiempo).