Wenn eine kontinuierliche Integration die Tests bei jedem Commit ausführt, ist es eine bewährte Methode, alle Tests zu jeder Zeit bestehen zu lassen (auch bekannt als "Den Build nicht unterbrechen").
Ich finde einige Probleme damit:
Zum Beispiel kann man einem Open-Source-Projekt nicht helfen, indem man Tests erstellt, die Tickets entsprechen. Ich weiß, wenn ich einem Open-Source-Projekt, das einen fehlgeschlagenen Test enthält, eine Pull-Anforderung vorschlage, wird der Build als fehlgeschlagen markiert, und das Projekt möchte nicht, dass dieser in seinem Repository zusammengeführt wird, da er "den Build unterbricht".
Und ich glaube nicht, dass es eine schlechte Sache ist, fehlerhafte Tests in Ihrem Repo zu haben , es ist, als hätten Sie offene Probleme in Ihrem Tracker. Dies sind nur Dinge, die darauf warten, repariert zu werden.
Das gleiche gilt für eine Firma. Wenn Sie mit TDD arbeiten, können Sie keine Tests schreiben, festschreiben und dann den Logikcode schreiben, der den Test erfüllt. Das heißt, wenn ich 4-5 Tests auf meinem Laptop geschrieben habe, kann ich sie nicht vor Urlaubsantritt festschreiben. Niemand kann meine Arbeit zurücknehmen. Ich kann sie nicht einmal mit einem Kollegen "teilen", außer indem ich sie zum Beispiel per E-Mail sende. Es wird auch verhindert, dass eine Person die Tests schreibt und die andere Person das Modell schreibt.
All das zu sagen, missbrauche / missverstehe ich den Build-Prozess / kontinuierliche Integration? Es scheint mir, dass "Bestehen" / "Nichtbestehen" ein zu enger Indikator ist.
Gibt es eine Möglichkeit, die kontinuierliche Integration und die TDD-Kompatibilität zu gewährleisten?
Vielleicht gibt es eine Standardlösung / -praxis zur Unterscheidung zwischen "neuen Tests" (die fehlschlagen können) und "Regressionstests" (die nicht fehlschlagen sollten , weil sie früher funktionierten)?