In un ambiente in cui non è possibile unire il codice che non supera i test, ovviamente non è possibile unire nuovi test falliti.
Ma come gestire un bug exploit appena scoperto, nel senso che hai scritto un nuovo test che espone un bug già esistente? Lo sviluppo basato sui test direbbe: Hooray, hai il test, ora correggi il bug e poi commetti entrambi.
Ma se tu a) sei un ingegnere di test che ha trovato l'exploit ma non sei in grado di risolverlo o b) potresti ripararlo ma non ora?
Opzione 1: Esegui il test su un ramo aggiuntivo, menzionalo nel problema del bug e in sostanza lascia il codice finché qualcuno non ha pietà e basa la sua correzione su questo ramo e impegna entrambi.
Opzione due: Segna il test in qualche modo come "non è bello che fallisce ma è previsto", uniscilo e l'integrazione continua lo lascia passare. Non appena il bug è stato risolto, si termina il trattamento speciale del test e lo si contrassegna come obbligatorio. Forse, l'elemento della configurazione mostrerebbe anche l'elenco dei guasti previsti, quindi hai un altro tipo di bug tracker.
Ci sono pratiche / standard comuni là fuori? Soprattutto per l'Opzione Due, i framework di test standard come JUnit, Google Test, ... hanno un qualche modo per modellarlo?