Cuando se realiza una integración continua ejecutando las pruebas en cada confirmación, una práctica recomendada común es hacer que todas las pruebas pasen en todo momento (también conocido como "no rompa la compilación").
Encuentro algunos problemas con eso:
Por ejemplo, uno no puede ayudar a un proyecto de código abierto creando pruebas correspondientes a tickets. Sé que si propongo una Solicitud de extracción a un proyecto de código abierto que contenga una prueba fallida, la compilación se marcará como fallida y el proyecto no querrá que se fusione en su repositorio porque "rompería la compilación".
Y no creo que sea malo tener pruebas fallidas en su repositorio , es como tener problemas abiertos en su rastreador. Estas son solo cosas que esperan ser reparadas.
Lo mismo ocurre en una empresa. Si trabaja con TDD, no puede escribir pruebas, comprometerse y luego escribir el código lógico que cumple la prueba. Eso significa que si he escrito 4-5 pruebas en mi computadora portátil, no puedo enviarlas antes de irme de vacaciones. Nadie puede recuperar mi trabajo. Ni siquiera puedo "compartirlos" con un colega, excepto enviándolos por correo electrónico, por ejemplo. También evita trabajar con una persona que escribe las pruebas y la otra que escribe el modelo.
Todo eso para decir, ¿estoy haciendo mal uso / malentendido el proceso de construcción / integración continua? Me parece que "pasar" / "no pasar" es un indicador demasiado limitado.
¿Hay alguna manera de hacer que la integración continua y la TDD sean compatibles?
¿Tal vez hay una solución / práctica estándar para distinguir "nuevas pruebas" (que pueden fallar) y "pruebas de regresión" (que no deberían fallar porque solían funcionar)?