El proyecto real me mostró que no es posible escribir pruebas unitarias y luego la integración e incluso la dirección opuesta es incorrecta :-) Por lo tanto, generalmente escribo pruebas unitarias junto con las de integración.
¿Por qué? Permítanme escribir cómo veo ambos tipos de pruebas:
Pruebas unitarias : además de Wikipedia y toda la información conocida, las pruebas unitarias lo ayudan a reducir su diseño , mejorar su modelo y sus relaciones. El flujo es simple: una vez que comienza a escribir un nuevo proyecto / nuevo componente, la mayoría de las veces está haciendo algún tipo de PoC . Cuando haya terminado, siempre tiene métodos largos, clases largas, métodos y clases no coherentes, etc.
Las pruebas unitarias lo ayudan a eliminar estos problemas, ya que cuando realiza pruebas unitarias reales utilizando simulaciones (sin dependencia de otro componente), las clases descritas anteriormente no se pueden probar. El signo básico de código no comprobable es una gran parte de burla de las pruebas porque se ve obligado a burlarse de muchas dependencias (o situaciones)
Pruebas de integración: las pruebas correctas y de trabajo le dicen que su nuevo componente (o componentes) funcionan juntos o con otros componentes; esta es la definición habitual. Descubrí que las pruebas de integración le ayudan principalmente a definir el flujo de cómo usar su componente desde el lado del consumidor .
Esto es realmente importante ya que a veces te dice que tu API no tiene sentido desde el exterior.
Bueno, ¿qué sucede una vez que escribí pruebas unitarias y pruebas de integración más tarde?
Obtuve buenas clases, un diseño claro, un buen constructor, métodos cortos y coherentes, IoC listo, etc. Una vez que doy mi clase / API a algún consumidor, por ejemplo, desarrollador de integración o equipo de GUI, no pudo usar mi API, ya que parece poco lógico. , extraño. Solo estaba confundido. Así que reparé la API de acuerdo con su punto de vista, pero también requería reescribir muchas pruebas porque me presionaron para cambiar los métodos y, a veces, incluso el flujo de cómo usar la API.
Bueno, ¿qué sucede una vez que escribí pruebas de integración y pruebas unitarias más tarde?
Obtuve el flujo exacto, buena usabilidad. Lo que también tengo son clases grandes, código no coherente, sin registro, métodos largos. Código de espagueti
Cual es mi consejo
He aprendido el siguiente flujo:
- Desarrolle el esqueleto básico de su código.
- Escriba pruebas de integración que indiquen si tiene sentido desde el punto de vista del consumidor. El caso de uso básico es suficiente por ahora. La prueba obviamente no funciona.
- Escriba el código junto con las pruebas unitarias para cada clase.
- Escriba el resto / falta de pruebas de integración. Sería mejor implementar estas pruebas en el n. ° 3 de cómo está mejorando su código.
Tenga en cuenta que hice una pequeña presentación sobre las pruebas de unidad / integración, vea la diapositiva # 21 donde se describe el esqueleto.