C# Language
Kodavtal och påståenden
Sök…
Påståenden för att kontrollera logiken bör alltid vara sanna
Påståenden används inte för att utföra test av inmatningsparametrar, utan för att verifiera att programflödet är korrekt - dvs att du kan göra vissa antaganden om din kod vid en viss tidpunkt. Med andra ord: ett test gjort med Debug.Assert
bör alltid anta att det testade värdet är true
.
Debug.Assert kör endast i DEBUG builds; det filtreras ut från RELEASE builds. Det måste betraktas som ett felsökningsverktyg utöver enhetstestning och inte som en ersättning av kodkontrakt eller ingångsvalideringsmetoder.
Till exempel är detta en bra påstående:
var systemData = RetrieveSystemConfiguration();
Debug.Assert(systemData != null);
Här hävdar är ett bra val eftersom vi kan anta att RetrieveSystemConfiguration () kommer att returnera ett giltigt värde och aldrig kommer att returnera noll.
Här är ett annat bra exempel:
UserData user = RetrieveUserData();
Debug.Assert(user != null);
Debug.Assert(user.Age > 0);
int year = DateTime.Today.Year - user.Age;
Först kan vi anta att RetrieveUserData () kommer att returnera ett giltigt värde. Sedan, innan vi använder egenskapen Ålder, verifierar vi antagandet (som alltid ska vara sant) att användarens ålder är strikt positiv.
Detta är ett dåligt exempel på påstå:
string input = Console.ReadLine();
int age = Convert.ToInt32(input);
Debug.Assert(age > 16);
Console.WriteLine("Great, you are over 16");
Påstående är inte för ingångsvalidering eftersom det är felaktigt att anta att detta påstående alltid kommer att vara sant. Du måste använda inmatningsvalideringsmetoder för det. I fallet ovan bör du också kontrollera att ingångsvärdet är ett tal i första hand.