La única razón por la cual una prueba de la unidad podría fallar es si se trata de la temporización (principalmente en el caso de la electrónica que se está probando). Sin embargo, incluso si esos casos, el objetivo debe ser eliminar el problema de tiempo de la prueba unitaria, p. extendiendo/cambiando el tiempo de espera u otro problema de tiempo si es posible. Cuando no es posible, debe estar bien documentado.
Otra forma de eliminar los problemas de temporización y hacer que las pruebas sean determinantes es escribir apéndices para todas las interfaces externas, con algún método de inyección, es decir, poder establecer los valores que devolverán los métodos de interfaz externos. Al configurar una prueba unitaria de esta manera, puede probar literalmente todo y también cada condición de error.
(historia: Trabajé en una empresa donde varias pruebas unitarias fallarían ocasionalmente. Solo unas pocas personas pudieron analizar si se trataba de errores serios o un problema de tiempo.Se ahorrará mucho tiempo para realizar buenas pruebas unitarias en El primer lugar).
+1 para separar * unidades * pruebas que validan la corrección del programa a partir de * pruebas de aceptación * que validan que el programa cumple los requisitos especificados. –