9 Stimmen

Sollten fehlgeschlagene Tests dazu führen, dass der kontinuierliche Build fehlschlägt?

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.

0voto

Denis Hennessy Punkte 6833

Das eigentliche Problem liegt bei Ihren fehlgeschlagenen Tests. Sie sollten keinen Unittest haben, bei dem ein Fehler in Ordnung ist, weil es sich um einen Randfall handelt. Entscheiden Sie, ob der Randfall wichtig ist oder nicht - wenn nicht, löschen Sie den Unittest; wenn ja, beheben Sie den Code.

Wie einige der anderen Antworten nahelegten, ist es definitiv ein Code-Geruch, wenn Unittests fehlschlagen. Wenn Sie mit dem Geruch leben, werden Sie weniger wahrscheinlich das nächste Problem bemerken.

0voto

earlNameless Punkte 2830

Alle Antworten waren großartig, hier ist was ich beschlossen habe zu tun:

Machen Sie die Tests (oder wenn nötig, teilen Sie einen fehlschlagenden Test), die nicht entscheidend sind, von NUnit ignorieren (ich erinnerte mich an dieses Feature, nachdem ich die Frage gestellt hatte). Dies ermöglicht:

  • Der Build kann fehlschlagen, wenn Tests fehlschlagen, wodurch die Geruchsbildung reduziert wird
  • Die ignorierten Tests müssen gegenüber dem Projektmanager verteidigt werden (wer auch immer verantwortlich ist)
  • Alle ignorierten Tests sind auf spezielle Weise markiert

Ich denke, das ist der beste Kompromiss, indem man die Leute zwingt, die Tests zu reparieren, aber nicht unbedingt sofort (aber sie müssen ihre Entscheidung verteidigen, sie jetzt nicht zu reparieren, da jeder weiß, was sie getan haben).


Was ich tatsächlich getan habe: die kaputten Tests repariert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X