Ocasionalmente me encontraré con la situación en la que corregir un error requiere que elimine una sección de código. El purista de TDD (supongo) recomendaría escribir una prueba fallida, eliminar el código y luego ver pasar la prueba.
Ahora, parece realmente extraño tener una prueba que afirme que se eliminó algún código. Claro, supongo que garantizaría que nadie cavara en el control de la fuente y volviera a poner ese código, pero ¿vale la pena? Si vale la pena, ciertamente parece menos valioso que escribir una prueba de código que se ha agregado , ¿verdad?
unit-testing
tdd
bug
jhewlett
fuente
fuente
Respuestas:
Lo estás mirando de la manera incorrecta. La prueba no afirma que se eliminó el código. La prueba hace afirmar una cierta funcionalidad.
La prueba no se preocupa por la cantidad de código requerida para que pase, ni se da cuenta de que ha eliminado algún código. El valor de tener una prueba de este tipo es el mismo que cualquier otra prueba que cree debido a un error: tiene confianza en la ausencia del error cuando pasa la prueba y la integración de la prueba en el proceso de compilación le garantiza que el error lo más probable es que no se reintroduzca.
Otra forma de verlo desde una perspectiva TDD es la siguiente: cuando sabe que eliminar el código corrige el error y luego se pregunta si debe escribir una prueba, ya lo hizo mal. Una vez que comience a trabajar en el error, primero debe escribir la prueba que garantiza la presencia del error al fallar. Solo después corrige el error real, que puede requerir la eliminación del código o no, y hace que la prueba pase. La pregunta que haces ni siquiera surge de esa manera.
fuente