C# Language
Kodex-Verträge und Zusicherungen
Suche…
Assertions zur Überprüfung der Logik sollten immer wahr sein
Assertions werden nicht dazu verwendet, Eingabeparameter zu testen, sondern um sicherzustellen, dass der Programmablauf korrekt ist, dh dass Sie zu einem bestimmten Zeitpunkt bestimmte Annahmen über Ihren Code treffen können. Mit anderen Worten: Ein mit Debug.Assert
durchgeführter Test sollte immer davon ausgehen, dass der getestete Wert " true
.
Debug.Assert wird nur in DEBUG-Builds ausgeführt. Es wird aus RELEASE-Builds herausgefiltert. Es muss als Debugging-Tool zusätzlich zum Komponententest betrachtet werden und nicht als Ersatz für Codeverträge oder Eingabevalidierungsmethoden.
Dies ist zum Beispiel eine gute Behauptung:
var systemData = RetrieveSystemConfiguration();
Debug.Assert(systemData != null);
Hier ist Assert eine gute Wahl, da wir davon ausgehen können, dass RetrieveSystemConfiguration () einen gültigen Wert zurückgibt und niemals NULL zurückgibt.
Hier ist ein weiteres gutes Beispiel:
UserData user = RetrieveUserData();
Debug.Assert(user != null);
Debug.Assert(user.Age > 0);
int year = DateTime.Today.Year - user.Age;
Zunächst können wir davon ausgehen, dass RetrieveUserData () einen gültigen Wert zurückgibt. Vor der Verwendung der Age-Eigenschaft überprüfen wir dann die Annahme (die immer wahr sein sollte), dass das Alter des Benutzers absolut positiv ist.
Dies ist ein schlechtes Beispiel für die Behauptung:
string input = Console.ReadLine();
int age = Convert.ToInt32(input);
Debug.Assert(age > 16);
Console.WriteLine("Great, you are over 16");
Assert ist nicht für die Überprüfung von Eingaben, da die Annahme, dass diese Assertion immer wahr ist, falsch ist. Sie müssen dafür Eingabevalidierungsmethoden verwenden. In dem obigen Fall sollten Sie auch sicherstellen, dass der Eingabewert an erster Stelle eine Zahl ist.