Wenn man ein Projekt hat, das Tests beinhaltet, die als Teil des Build-Vorgangs auf einer Build-Maschine ausgeführt werden, sollte der gesamte Build fehlschlagen, wenn ein Satz Tests fehlschlägt?
Was sind die Dinge, die man berücksichtigen sollte, wenn man diese Frage beantwortet? Spielt es eine Rolle, welche Tests fehlschlagen?
Hintergrundinformationen, die zu dieser Frage geführt haben:
Derzeit arbeite ich an einem Projekt, das NUnit-Tests beinhaltet, die als Teil des Build-Vorgangs durchgeführt und auf unserer Cruise Control .NET-Build-Maschine ausgeführt werden.
Früher war das Projekt so eingerichtet, dass der Build fehlschlägt, wenn Tests fehlschlagen. Die Begründung dafür war, dass wenn die Tests fehlschlagen, das bedeutet, dass das Produkt nicht funktioniert/nicht komplett ist/es ein Scheitern des Projekts ist, und daher der Build fehlschlagen sollte.
Wir haben einige Tests hinzugefügt, die fehlschlagen, aber nicht entscheidend für das Projekt sind (weitere Details unten). Also, wenn diese Tests fehlschlagen, ist das Projekt kein vollständiges Scheitern, und wir würden immer noch möchten, dass es gebaut wird.
Einer der Tests, der besteht, überprüft, dass falsche Argumente zu einer Ausnahme führen, aber der Test, der nicht besteht, überprüft, dass alle erlaubten Argumente nicht zu einer Ausnahme führen. Die Klasse lehnt also alle ungültigen Fälle ab, aber auch einige gültige. Das ist kein Problem für das Projekt, da die abgelehnten gültigen Argumente Randfälle sind, auf die die Anwendung nicht angewiesen ist.