Si bien hay formas de evitar que se ejecuten las pruebas unitarias, ¿cuál es el valor de verificar las pruebas unitarias que fallan?
Usaré un ejemplo simple: mayúsculas y minúsculas. El código actual distingue entre mayúsculas y minúsculas. Una entrada válida en el método es "Cat" y devolvería una enumeración de Animal.Cat. Sin embargo, la funcionalidad deseada del método no debe ser sensible a mayúsculas y minúsculas. Entonces, si el método descrito se pasó "gato", posiblemente podría devolver algo como Animal.Null en lugar de Animal.Cat y la prueba unitaria fallaría. Aunque un simple cambio de código haría que esto funcionara, solucionar un problema más complejo puede llevar semanas, pero identificar el error con una prueba unitaria podría ser una tarea menos compleja.
La aplicación que se está analizando actualmente tiene 4 años de código que "funciona". Sin embargo, las discusiones recientes sobre las pruebas unitarias han encontrado fallas en el código. Algunos solo necesitan documentación de implementación explícita (por ejemplo, mayúsculas o minúsculas) o código que no ejecute el error en función de cómo se llama actualmente. Pero se pueden crear pruebas unitarias ejecutando escenarios específicos que harán que se vea el error y sean entradas válidas.
¿Cuál es el valor de verificar las pruebas unitarias que ejercitan el error hasta que alguien pueda solucionar el código?
¿Debería marcarse esta prueba unitaria con ignorar, prioridad, categoría, etc., para determinar si una compilación fue exitosa en base a las pruebas ejecutadas? Finalmente, la prueba unitaria debe crearse para ejecutar el código una vez que alguien lo arregle.
Por un lado, muestra que los errores identificados no se han corregido. Por otro lado, podría haber cientos de pruebas unitarias fallidas que aparecen en los registros y eliminar las que deberían fallar frente a las fallas debido a un registro de código sería difícil de encontrar.