.NET 4.0-Codeverträge - Wie wirken sie sich auf Komponententests aus?

Zum Beispiel dasArtikel stellt sie vor.

Was ist der vorteil

Die statische Analyse scheint cool zu sein, verhindert jedoch gleichzeitig die Übergabe von Null als Parameter im Komponententest. (Wenn Sie dem Beispiel im Artikel gefolgt sind)

Wenn Sie sich mit Unit-Tests beschäftigen - angesichts des derzeitigen Stands der Dinge ist es sicherlich sinnlos, Codeverträge abzuschließen, wenn Sie bereits das automatisierte Testen praktizieren?

Aktualisieren

Nachdem ich mit Code Contracts gespielt habe, bin ich etwas enttäuscht. Zum Beispiel basierend auf dem Code in der akzeptierten Antwort:

public double CalculateTotal(Order order)
{
    Contract.Requires(order != null);
    Contract.Ensures(Contract.Result<double>() >= 0);
    return 2.0;
}

Für Unit-Tests, Sieimmer noch müssen Tests schreiben, um sicherzustellen, dass null nicht bestanden werden kann und das Ergebnis größer oder gleich null ist, wenn die Verträge bestehenGeschäftslogik. Mit anderen Worten, wenn ich den ersten Vertrag entfernen würde, würden keine Tests unterbrochen, es sei denn, ich hätte speziell einen Test für diese Funktion durchgeführt. Dies basiert jedoch darauf, dass die statische Analyse, die in den besseren (ultimativen usw.) Editionen von Visual Studio integriert ist, nicht verwendet wird.

Im Grunde genommen läuft alles auf eine alternative Schreibweise traditioneller if-Anweisungen hinaus. Meine Erfahrung tatsächlich mitTDD, mit Code-Verträgen zeigt warum und wie ich es gemacht habe.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage